{"components":{"schemas":{"AccountBalance":{"properties":{"closing_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"The closing balance for the day","example":25000.45},"currency":{"description":"Currency of the balance","example":"USD","type":"string"},"date":{"description":"Date of the balance","example":"2022-01-01","format":"date","type":"string"}},"required":["closing_amount"],"type":"object"},"AccountBalance1":{"properties":{"account_id":{"example":"checking_account_202348","maxLength":400,"type":"string"},"batch_closing_balance":{"description":"The closing balance for this account after the transactions in this batch","example":25000.45,"type":"number"}},"required":["account_id","batch_closing_balance"],"type":"object"},"AccountDataSourceReconciliationRange":{"properties":{"end_date":{"format":"date","type":"string"},"reconciliation_report_by_date":{"additionalProperties":{"items":{"$ref":"#/components/schemas/DataSourceAccountDateReconciliationMetrics"},"type":"array"},"type":"object"},"reconciliation_status":{"enum":["no_data","single_source","reconciled","unreconciled"],"type":"string"},"start_date":{"format":"date","type":"string"}},"required":["end_date","reconciliation_report_by_date","reconciliation_status","start_date"],"type":"object"},"AccountDataSourcesReconciliation":{"properties":{"account_number":{"type":"string"},"has_unreconciled_enabled_overlap":{"type":"boolean"},"ranges":{"items":{"$ref":"#/components/schemas/AccountDataSourceReconciliationRange"},"type":"array"}},"required":["account_number","has_unreconciled_enabled_overlap","ranges"],"type":"object"},"AccountTransactionDataCoverage":{"properties":{"account_number":{"type":"string"},"data_source_type":{"type":"string"},"ranges":{"items":{"$ref":"#/components/schemas/AccountTransactionDataCoverageRange"},"type":"array"}},"required":["account_number","data_source_type","ranges"],"type":"object"},"AccountTransactionDataCoverageRange":{"properties":{"data_source_account":{"allOf":[{"$ref":"#/components/schemas/DataSourceAccount"}],"nullable":true},"end_date":{"format":"date","type":"string"},"has_coverage":{"type":"boolean"},"is_enabled":{"nullable":true,"type":"boolean"},"start_date":{"format":"date","type":"string"}},"required":["end_date","has_coverage","start_date"],"type":"object"},"AddFunderIntegrationRequestSchema":{"properties":{"funder_heron_id":{"type":"string"}},"required":["funder_heron_id"],"type":"object"},"AddFunderToPoliciesSchema":{"additionalProperties":false,"properties":{"funder_heron_id":{"description":"Heron ID of the funder to add","type":"string"}},"required":["funder_heron_id"],"type":"object"},"Address":{"properties":{"city":{"nullable":true,"type":"string"},"line_1":{"nullable":true,"type":"string"},"line_2":{"nullable":true,"type":"string"},"state":{"nullable":true,"type":"string"},"zip":{"nullable":true,"type":"string"}},"type":"object"},"AddressFields":{"properties":{"city":{"description":"Town or city; null when the address could not be split.","nullable":true,"type":"string"},"country":{"description":"Country of the address; null when no state was read.","nullable":true,"type":"string"},"is_po_box":{"description":"True when the address names a PO box rather than a building.","type":"boolean"},"line_1":{"description":"Street and building number; null when unavailable.","nullable":true,"type":"string"},"line_2":{"description":"Flat, unit or suite; null when none was stated.","nullable":true,"type":"string"},"postcode":{"description":"ZIP code, with its four-digit extension when stated.","nullable":true,"type":"string"},"raw":{"description":"The address exactly as the source wrote it, in one line.","type":"string"},"region":{"description":"State, province or county; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"AddressLocation":{"properties":{"lat":{"type":"number"},"lng":{"type":"number"}},"type":"object"},"AddressWrite":{"additionalProperties":false,"properties":{"city":{"description":"Town or city; null when the address could not be split.","nullable":true,"type":"string"},"country":{"description":"Country of the address; null when no state was read.","nullable":true,"type":"string"},"heron_id":{"description":"The address or phone this states something about, as `GET /end_users/{id}/details` returned it. Omit it to declare a new one.","nullable":true,"type":"string"},"line_1":{"description":"Street and building number; null when unavailable.","nullable":true,"type":"string"},"line_2":{"description":"Flat, unit or suite; null when none was stated.","nullable":true,"type":"string"},"postcode":{"description":"ZIP code, with its four-digit extension when stated.","nullable":true,"type":"string"},"region":{"description":"State, province or county; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"AffiliateSubject":{"properties":{"application":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckApplication"}],"description":"Identity searched, taken from the application data."},"candidates":{"description":"Every deduplicated candidate returned across the subject's searches, with its match score.","items":{"$ref":"#/components/schemas/BackgroundCheckCandidate"},"type":"array"},"case_ref":{"description":"Reserved case reference; null in normal use.","nullable":true,"type":"string"},"decision":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckDecision"}],"description":"Audit of how the winning candidate was selected; null when no scoring decision was needed.","nullable":true},"duns_numbers":{"description":"D&B DUNS numbers of the resolved business. Empty for person subjects.","items":{"type":"string"},"type":"array"},"firmographics":{"allOf":[{"$ref":"#/components/schemas/BusinessFirmographics"}],"description":"Business facts grouped by source; null for person subjects.","nullable":true},"key":{"description":"Identifier for an affiliate report, such as affiliate_business_bcs_x7Kp2 - not one of the three fixed subject keys.","type":"string"},"kind":{"description":"Subject type: person or business.","enum":["person","business"],"type":"string"},"name":{"description":"Label for the subject: the matched record's filed name for a business, the searched name for a person. Null when neither is known.","nullable":true,"type":"string"},"related_party_officers":{"description":"Business-filing officers who match a related party on the deal.","items":{"type":"string"},"type":"array"},"resolution":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckResolution"}],"description":"How and whether the subject was matched."},"role":{"description":"Subject's role on the deal; null when unavailable.","nullable":true,"type":"string"},"searches":{"description":"Search waterfall in attempted order, including each step's inputs and outcome.","items":{"$ref":"#/components/schemas/SearchAttempt"},"type":"array"},"sections":{"description":"Report findings grouped by record type.","items":{"$ref":"#/components/schemas/BackgroundCheckSection"},"type":"array"},"unreported_officers":{"description":"Officers on active business filings who are not listed as owners on the application. Empty for person subjects.","items":{"type":"string"},"type":"array"}},"required":["application","candidates","firmographics","key","kind","resolution","searches","sections","unreported_officers"],"type":"object"},"Analysis":{"properties":{"active":{"nullable":true,"type":"string"},"dpv_cmra":{"nullable":true,"type":"string"},"dpv_footnotes":{"nullable":true,"type":"string"},"dpv_match_code":{"nullable":true,"type":"string"},"dpv_no_stat":{"nullable":true,"type":"string"},"dpv_vacant":{"nullable":true,"type":"string"},"footnotes":{"nullable":true,"type":"string"}},"type":"object"},"Annotation":{"properties":{"annotator":{"allOf":[{"$ref":"#/components/schemas/AnnotatorPublic"}],"readOnly":true},"category":{"allOf":[{"$ref":"#/components/schemas/Category1"}],"readOnly":true},"confidence":{"readOnly":true,"type":"number"},"model_version":{"readOnly":true,"type":"string"}},"type":"object"},"AnnotationSettings":{"properties":{"annotators":{"items":{"$ref":"#/components/schemas/AnnotatorSettings"},"maxItems":10,"type":"array"},"heron_ai_chunk_size":{"type":"integer"},"llm_counterparty_extraction_and_clustering_enabled":{"type":"boolean"},"llm_counterparty_extraction_chunk_size":{"type":"integer"},"reconcile":{"type":"boolean"},"reconcile_version":{"type":"string"},"slug":{"enum":["us_sme_lend_2","ca_sme_lend_2","gb_sme_lend_2","gb_sme_lender","us_sme_lender","us_consumer","smartbiz_loans","24","30","171","capchase"]},"split_intra_co_transfers_to_inflows_outflows":{"type":"boolean"},"split_p2p_to_inflows_outflows":{"type":"boolean"}},"type":"object"},"AnnotatorPublic":{"properties":{"context":{"enum":["sync","async_","manual","undetermined"],"type":"string"},"priority_type":{"enum":["gold_standard","client_feedback","tagging_ui","reconcile","heuristic","classifier","undetermined","positions_detection"],"type":"string"}},"required":["context","priority_type"],"type":"object"},"AnnotatorSettings":{"properties":{"async_":{"type":"boolean"},"confidence_threshold":{"maximum":1.0,"minimum":0.0,"type":"number"},"label":{"pattern":"^(heuristics|rich_heuristics|distilbert|distilbert_intra_co_override_async_|random_forest|heron_ai_.+)$","type":"string"},"sync":{"type":"boolean"}},"type":"object"},"AnomalyParams":{"properties":{"category_label_or_heron_id":{"description":"Label or Heron ID of category to find anomalies for","example":"Revenue","type":"string"}},"required":["category_label_or_heron_id"],"type":"object"},"AnomalySchema":{"properties":{"amount":{"description":"Converted amount of transaction in currency","example":42.42,"type":"number"},"anomaly_score":{"description":"Anomaly score 0-1, where 1 is very anomalous, and 0 is not anomalous","example":0.5,"type":"number"},"currency":{"description":"Currency code for amount that transaction was converted to","example":"USD","type":"string"},"heron_id":{"description":"Heron ID of the Transaction","example":"txn_KuUnLS7smKYi3Wp7dDTzMF","type":"string"},"reference_id":{"description":"Customer-provided reference ID for the Transaction","example":"1342db06-feb7-4c33-a157-4351d74a98e9","type":"string"}},"type":"object"},"AnyMarshmallowSchema":{"additionalProperties":true,"properties":{},"type":"object"},"ApiKeyCreatedSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_active":{"readOnly":true,"type":"boolean"},"name":{"readOnly":true,"type":"string"},"token":{"description":"Full token - shown only once","readOnly":true,"type":"string"},"token_prefix":{"readOnly":true,"type":"string"}},"type":"object"},"ApiKeyStatusSchema":{"properties":{"heron_id":{"readOnly":true,"type":"string"},"is_active":{"readOnly":true,"type":"boolean"}},"type":"object"},"ApiKeyWithLastUsedSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_active":{"readOnly":true,"type":"boolean"},"last_used":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"token_prefix":{"readOnly":true,"type":"string"}},"type":"object"},"AppStoreSchema":{"properties":{"applications":{"items":{"$ref":"#/components/schemas/Application"},"type":"array"}},"type":"object"},"Application":{"properties":{"cta":{"$ref":"#/components/schemas/CTA"},"description":{"description":"A brief description of the application.","example":"This is an example application.","type":"string"},"file_classes":{"example":[{"description":"description1","name":"file_class1"},{"description":"description2","name":"file_class2"}],"items":{"$ref":"#/components/schemas/FileClass"},"type":"array"},"heron_id":{"example":"asa_1a833hPPXwu8BrzFhoDVJL","type":"string"},"image":{"description":"URL to the application's logo","example":"https://example.com/image.png","format":"url","type":"string"},"integrations":{"example":["integration1","integration2"],"items":{"type":"string"},"type":"array"},"is_enabled":{"example":true,"type":"boolean"},"name":{"description":"The name of the application.","example":"Example App","type":"string"},"priority":{"example":1,"type":"integer"},"tags":{"example":["tag1","tag2"],"items":{"type":"string"},"type":"array"},"type":{"description":"The type of the application.","enum":["enricher","integration","ingestion","parser","check","analytics","workflow"],"example":"enricher","type":"string"},"use_cases":{"example":["use_case1","use_case2"],"items":{"type":"string"},"type":"array"}},"required":["description","heron_id","is_enabled","name","priority","type"],"type":"object"},"AssociateRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"age":{"description":"Reported age of the associate.","nullable":true,"type":"integer"},"association_description":{"description":"Source description of the association, such as Shared Address.","nullable":true,"type":"string"},"city_state":{"description":"Reported city and state.","nullable":true,"type":"string"},"date_of_birth":{"description":"Date of birth; null when unavailable.","format":"date","nullable":true,"type":"string"},"death_date":{"description":"Reported date of death; null when unavailable.","format":"date","nullable":true,"type":"string"},"entity_id":{"description":"Source entity identifier; null when unavailable.","nullable":true,"type":"string"},"first_reported_date":{"description":"First reported date; null when unavailable.","format":"date","nullable":true,"type":"string"},"is_deceased":{"description":"True when the associate is reported deceased.","type":"boolean"},"is_high_risk":{"description":"True when the associate is marked high risk.","type":"boolean"},"last_reported_date":{"description":"Last reported date; null when unavailable.","format":"date","nullable":true,"type":"string"},"name":{"description":"Name of the associate.","nullable":true,"type":"string"},"relationship":{"description":"Source-provided relationship to the subject.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"shares_address":{"description":"True when the associate shares an address with the subject.","type":"boolean"},"shares_phone":{"description":"True when the associate shares a phone number with the subject.","type":"boolean"},"strength_of_association":{"description":"Source strength score for the association; null when unavailable.","nullable":true,"type":"integer"}},"type":"object"},"AsyncScorecardQueryParams":{"properties":{"date":{"description":"Cut-off date to consider transactions to for calculating scorecard (inclusive)","example":"2023-01-19","format":"date","type":"string"}},"required":["date"],"type":"object"},"AttributeEvidence":{"properties":{"record_indices":{"items":{"type":"integer"},"nullable":true,"type":"array"},"section":{"nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"string"},"source_ids":{"items":{"type":"string"},"nullable":true,"type":"array"},"source_type":{"type":"string"}},"type":"object"},"AvailableEnvironments":{"properties":{"default_environment":{"description":"Default environment for the user (username)","example":"heron_data","type":"string"},"organizations":{"description":"List of organizations available to the user","example":[{"environments":[{"alias":"Development","environment":"dev","username":"dev"},{"alias":"Staging","environment":"staging","username":"staging"}],"name":"My Organization","slug":"my-organization"}],"items":{"allOf":[{"$ref":"#/components/schemas/AvailableEnvironmentsOrganization"}],"description":"List of organizations available to the user"},"type":"array"}},"type":"object"},"AvailableEnvironmentsEnvironment":{"properties":{"alias":{"description":"Alias for the environment","example":"Development","type":"string"},"environment":{"description":"Environment name","example":"dev","type":"string"},"username":{"description":"Name of the environment","example":"dev","type":"string"}},"type":"object"},"AvailableEnvironmentsOrganization":{"properties":{"environments":{"description":"List of environments available to the user","example":["dev","staging","prod"],"items":{"allOf":[{"$ref":"#/components/schemas/AvailableEnvironmentsEnvironment"}],"description":"List of environments available to the user"},"type":"array"},"name":{"description":"Name of the organization","example":"My Organization","type":"string"},"slug":{"description":"Slug of the organization","example":"my-organization","type":"string"}},"type":"object"},"BackgroundCheckAffiliateConfirmSchema":{"properties":{"entity_id":{"description":"The chosen candidate's entity identifier from the report's search trail.","type":"string"},"ref":{"description":"The affiliate report request reference, as returned when it was requested.","type":"string"}},"required":["entity_id","ref"],"type":"object"},"BackgroundCheckAffiliateReport":{"properties":{"kind":{"description":"Whether the report is for an affiliated business or person.","enum":["person","business"],"type":"string"},"name":{"description":"Name of the affiliate the report was requested for.","type":"string"},"ref":{"description":"Stable reference for this affiliate report request; echo it when confirming a candidate or removing the request.","type":"string"},"status":{"description":"Report lifecycle: pending until the next screening run pulls it, succeeded when the report is ready, not_found when no confident match was found (a candidate can be confirmed), or failed.","enum":["pending","succeeded","not_found","failed"],"type":"string"},"subject":{"allOf":[{"$ref":"#/components/schemas/AffiliateSubject"}],"description":"The affiliate's search trail and report findings, shaped like a subject; null when it failed.","nullable":true}},"required":["kind","name","ref","status"],"type":"object"},"BackgroundCheckAffiliateReportRequestSchema":{"properties":{"affiliates":{"description":"The affiliations to request CLEAR reports for, at most 25 per request.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliateSelection"},"maxItems":25,"minItems":1,"type":"array"}},"required":["affiliates"],"type":"object"},"BackgroundCheckAffiliateRequestAcceptedSchema":{"properties":{"requests":{"description":"One entry per selection: the report request accepted for processing, or the in-flight request it was deduplicated against.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliationReportState"},"type":"array"}},"required":["requests"],"type":"object"},"BackgroundCheckAffiliateSearchInputs":{"properties":{"city":{"description":"City of the address to search on.","nullable":true,"type":"string"},"date_of_birth":{"description":"The person's date of birth; ignored for a business.","format":"date","nullable":true,"type":"string"},"phone":{"description":"Phone number on file; ignored for a person.","nullable":true,"type":"string"},"state":{"description":"State of the address to search on.","nullable":true,"type":"string"},"street":{"description":"Street of the address to search on.","nullable":true,"type":"string"},"zip_code":{"description":"ZIP code of the address to search on.","nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckAffiliateSelection":{"properties":{"index":{"description":"Position of the affiliation in that owner's list, as returned by the affiliations endpoint.","minimum":0,"type":"integer"},"kind":{"description":"Whether the selection is an affiliated business or person.","enum":["person","business"],"type":"string"},"name":{"description":"Name shown for the affiliation; the request is rejected if the list has changed.","type":"string"},"search_inputs":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckAffiliateSearchInputs"}],"description":"Details to search a corporate officer on, whose filing carries only a name. Optional, and ignored for selections whose source already holds search details.","nullable":true},"source":{"description":"The list the selection's index refers to, as returned on the row. Optional for compatibility: when omitted, a business subject_key means the officer-company list and an owner subject_key means work affiliations. Required to request a corporate filing.","enum":["work_affiliation","corporate_officer","corporate_filing",null],"nullable":true,"type":"string"},"subject_key":{"description":"The report whose list the selection refers to: an owner's affiliations, or the people and companies named as officers on the business's own filings.","enum":["owner_1","owner_2","business"],"type":"string"}},"required":["index","kind","name","subject_key"],"type":"object"},"BackgroundCheckAffiliationPersonRow":{"properties":{"city_state":{"description":"Reported city and state.","nullable":true,"type":"string"},"date_of_birth":{"description":"Date of birth; null when unavailable.","format":"date","nullable":true,"type":"string"},"has_entity_id":{"description":"Whether CLEAR identified this associate. When true a report pulls directly; when false a search runs first and may require confirming a candidate.","type":"boolean"},"index":{"description":"Position in that report's list.","type":"integer"},"name":{"description":"Name of the associate.","nullable":true,"type":"string"},"relationship":{"description":"Source-provided relationship to the owner.","nullable":true,"type":"string"},"report":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckAffiliationReportState"}],"description":"State of the most recent report requested for this associate; null when never requested.","nullable":true},"subject_key":{"description":"The report that names this person: owner_1 or owner_2 for an owner's associate, or business for an unreported corporate officer.","enum":["owner_1","owner_2","business"],"type":"string"}},"required":["has_entity_id","index","subject_key"],"type":"object"},"BackgroundCheckAffiliationReportState":{"properties":{"kind":{"description":"Whether the report is for an affiliated business or person.","enum":["person","business"],"type":"string"},"ref":{"description":"Stable reference for this affiliate report request; echo it when confirming a candidate or removing the request.","type":"string"},"status":{"description":"Report lifecycle: pending until the next screening run pulls it, succeeded when the report is ready, not_found when no confident match was found (a candidate can be confirmed), or failed.","enum":["pending","succeeded","not_found","failed"],"type":"string"}},"required":["kind","ref","status"],"type":"object"},"BackgroundCheckAffiliationRow":{"properties":{"address":{"description":"Address of the business; null when unavailable.","nullable":true,"type":"string"},"address_state":{"description":"State of the business address; null when unavailable.","nullable":true,"type":"string"},"business_name":{"description":"Business the owner is affiliated with.","nullable":true,"type":"string"},"index":{"description":"Position in that report's list; echo it when requesting a report.","type":"integer"},"legal_business_name":{"description":"Legal name of the business as filed; null when unavailable.","nullable":true,"type":"string"},"merged_from":{"description":"Every filing behind this affiliation, each as the source reported it, including the one whose values the affiliation shows, so more than one entry means values were combined. Empty for an affiliation with no filing behind it, such as a corporate officer named on the business's own report.","items":{"$ref":"#/components/schemas/MergedFiling"},"type":"array"},"organization_type":{"description":"Source-provided organisation type, such as CORPORATION; null when unavailable.","nullable":true,"type":"string"},"report":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckAffiliationReportState"}],"description":"State of the most recent report requested for this affiliation; null when never requested.","nullable":true},"role":{"description":"Role at the business, such as CEO, DIRECTOR, or Registered Agent.","nullable":true,"type":"string"},"roles":{"description":"All roles the owner holds at the business, such as Officer or Registered Agent.","items":{"type":"string"},"type":"array"},"since_date":{"description":"Date the affiliation began; null when unavailable.","format":"date","nullable":true,"type":"string"},"source":{"description":"Which list produced this row: an owner's work affiliation, a company named as an officer on the business report's filings, or a business filed under an owner (corporate filings). Echo it with the index when requesting a report.","enum":["work_affiliation","corporate_officer","corporate_filing"],"type":"string"},"status":{"description":"Source-provided status of the affiliation.","nullable":true,"type":"string"},"subject_key":{"description":"The report that names this business: owner_1 or owner_2 for an owner's affiliation, or business for a company named as an officer on the business's own filings.","enum":["owner_1","owner_2","business"],"type":"string"},"year_established":{"description":"Year the business was established as recorded on the source; null when unavailable.","nullable":true,"type":"string"}},"required":["index","source","subject_key"],"type":"object"},"BackgroundCheckAffiliationsBlock":{"properties":{"business":{"description":"Reports requested for affiliated businesses, in request order.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliateReport"},"type":"array"},"person":{"description":"Reports requested for affiliated people, in request order.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliateReport"},"type":"array"}},"required":["business","person"],"type":"object"},"BackgroundCheckAffiliationsViewSchema":{"properties":{"businesses":{"description":"Businesses the owners are affiliated with, from their background check reports.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliationRow"},"type":"array"},"persons":{"description":"People associated with the owners, from their background check reports.","items":{"$ref":"#/components/schemas/BackgroundCheckAffiliationPersonRow"},"type":"array"},"status":{"description":"Run lifecycle of the underlying background check. Lists reflect the most recent succeeded run; while a newer run is processing or failed they keep the last completed data and pending report requests show as pending.","enum":["never_run","processing","succeeded","failed","missing_input_data"],"type":"string"}},"required":["businesses","persons","status"],"type":"object"},"BackgroundCheckApplication":{"description":"The application identity used for the search. All fields are nullable; SSNs remain masked.","properties":{"address":{"description":"Application address used to search this subject; null when unavailable.","nullable":true,"type":"string"},"business_name":{"description":"Application business name; null for person subjects.","nullable":true,"type":"string"},"date_of_birth":{"description":"Date of birth; null when unavailable.","format":"date","nullable":true,"type":"string"},"ein":{"description":"Employer Identification Number used for the search; null when unavailable.","nullable":true,"type":"string"},"email":{"description":"Email address; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Application person name; null for business subjects.","nullable":true,"type":"string"},"owner":{"description":"Named owner used when searching a business subject; null for person subjects.","nullable":true,"type":"string"},"phone":{"description":"Phone number; null when unavailable.","nullable":true,"type":"string"},"ssn":{"description":"Masked SSN. Only the first five digits are ever held or returned; the full SSN never appears.","nullable":true,"type":"string"},"state":{"description":"Application state; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckCandidate":{"description":"One deduplicated candidate across the subject's search attempts, including its match score.","properties":{"address":{"description":"Candidate address returned by the search.","nullable":true,"type":"string"},"aka_names":{"description":"Also-known-as names on the candidate.","items":{"type":"string"},"type":"array"},"basis":{"description":"Search basis that returned the candidate, such as the matching name variant.","nullable":true,"type":"string"},"duns_numbers":{"description":"D&B DUNS numbers from the business candidate; empty for person candidates.","items":{"type":"string"},"type":"array"},"entity_id":{"description":"Source entity identifier; null when unavailable.","nullable":true,"type":"string"},"group_id":{"description":"Source record-group identifier; null when unavailable.","nullable":true,"type":"string"},"id":{"description":"Stable candidate reference: source entity ID, or group ID as fallback.","type":"string"},"is_limited":{"description":"Whether the candidate is a limited-data record; null when unknown.","nullable":true,"type":"boolean"},"matched_address":{"description":"Non-primary address that matched the search; null when the primary address matched.","nullable":true,"type":"string"},"matched_aka_name":{"description":"Also-known-as name that matched the search; null when the primary name matched.","nullable":true,"type":"string"},"name":{"description":"Candidate name returned by the search.","nullable":true,"type":"string"},"rank":{"description":"Candidate's position in the search results.","nullable":true,"type":"integer"},"relevance":{"description":"Source relevance score for the search hit.","nullable":true,"type":"integer"},"score":{"allOf":[{"$ref":"#/components/schemas/CandidateScore"}],"description":"Match score audit; null when the candidate was not scored.","nullable":true}},"required":["id"],"type":"object"},"BackgroundCheckCandidateOverrideSchema":{"properties":{"business":{"description":"Selected candidate ID for the business; null when not overridden.","nullable":true,"type":"string"},"owner_1":{"description":"Selected candidate ID for owner_1; null when not overridden.","nullable":true,"type":"string"},"owner_2":{"description":"Selected candidate ID for owner_2; null when not overridden.","nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckCheck":{"properties":{"area":{"description":"Display group for the policy check.","type":"string"},"area_sub":{"description":"Display subgroup for the policy check; null when the check has none.","nullable":true,"type":"string"},"auto_reason":{"description":"Explanation for the automated policy outcome; null when unavailable.","nullable":true,"type":"string"},"auto_status":{"description":"Automated outcome: pass, review_required, failed, or missing_data.","enum":["pass","failed","review_required","missing_data"]},"check_text":{"description":"Human-readable description of what the policy check evaluates.","type":"string"},"evidence_subjects":{"description":"Per-subject pointers to the findings that produced the policy outcome.","items":{"$ref":"#/components/schemas/BackgroundCheckEvidence"},"type":"array"},"id":{"description":"Stable check ID in <subject_tier>:<signal> form.","type":"string"},"override":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckOverride"}],"description":"Manual reviewer override; null when the automated outcome stands.","nullable":true},"rule":{"description":"Configured threshold or rule expression; null when the check has none.","nullable":true,"type":"string"},"signal":{"description":"Underlying attribute evaluated by the policy check.","type":"string"}},"required":["area","auto_status","check_text","evidence_subjects","id","signal"],"type":"object"},"BackgroundCheckCheckCounts":{"properties":{"fail":{"description":"Number of failed policy checks.","type":"integer"},"pass":{"description":"Number of passed policy checks.","type":"integer"},"review":{"description":"Number of policy checks requiring review.","type":"integer"}},"required":["fail","pass","review"],"type":"object"},"BackgroundCheckDecision":{"properties":{"anchored_by":{"description":"Anchor identifier that resolved the match outright: ein or corp_number_echo; null when unanchored.","nullable":true,"type":"string"},"near_tie":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckNearTie"}],"description":"Top-two score comparison; null when the candidates were not close.","nullable":true},"pooled_count":{"description":"Number of candidates pooled and scored.","nullable":true,"type":"integer"},"tie_break":{"description":"How the winner separated from the runner-up; null when there was no winner/runner-up.","enum":["score","key_order","flag_probe",null],"nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckEvidence":{"properties":{"filtered":{"description":"True when record_indices is a matched subset. An empty filtered list means no records matched.","type":"boolean"},"record_indices":{"description":"Indices into the cited section's records array.","items":{"type":"integer"},"type":"array"},"section":{"description":"Section key containing the cited evidence; null when no section applies.","nullable":true,"type":"string"},"subject_key":{"description":"Evidence subject: owner_1, owner_2, business, any_owner, or submission.","enum":["owner_1","owner_2","business","any_owner","submission",null],"nullable":true,"type":"string"}},"required":["filtered","record_indices"],"type":"object"},"BackgroundCheckNearTie":{"properties":{"flag_counts":{"additionalProperties":{"type":"integer"},"description":"Adverse-flag counts per probed candidate, keyed by candidate id; null when not probed.","nullable":true,"type":"object"},"gap":{"description":"Difference between the top two candidate scores.","type":"number"},"probed":{"description":"True when both near-tied candidate reports were retrieved and compared.","type":"boolean"}},"required":["gap","probed"],"type":"object"},"BackgroundCheckOverall":{"properties":{"check_counts":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckCheckCounts"}],"description":"Policy check totals."},"result":{"description":"Headline result: passed, review_required, failed, or missing_data.","enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"severity":{"description":"Highest severity found: none, low, medium, or high.","enum":["none","low","medium","high"],"type":"string"}},"required":["check_counts","result","severity"],"type":"object"},"BackgroundCheckOverride":{"properties":{"at":{"description":"When the reviewer applied the override.","format":"date-time","type":"string"},"by":{"description":"Reviewer who applied the override.","type":"string"},"status":{"description":"Reviewer-selected outcome replacing the automated result.","enum":["pass","failed","review_required","missing_data"]}},"required":["at","by","status"],"type":"object"},"BackgroundCheckPolicy":{"properties":{"checks":{"description":"One entry per configured policy check.","items":{"$ref":"#/components/schemas/BackgroundCheckCheck"},"type":"array"},"result":{"description":"Worst configured policy outcome: passed, review_required, failed, or missing_data.","enum":["passed","failed","review_required","missing_data","execution_error","skipped"]}},"required":["checks","result"],"type":"object"},"BackgroundCheckRawReportSchema":{"properties":{"file_b64":{"description":"Base64-encoded document bytes","type":"string"},"filename":{"description":"Suggested download filename","type":"string"},"mime_type":{"description":"MIME type of the document","type":"string"}},"required":["file_b64","filename","mime_type"],"type":"object"},"BackgroundCheckRecordDetail":{"description":"Supplementary source detail returned with include_section_detail=true. The summarised record is the stable typed interface.","properties":{"additional_fields":{"description":"Every source value not mapped to a named field, as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValue"},"type":"array"},"arrests":{"description":"Arrest entries as source-provided key and value pairs.","items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"attorneys":{"description":"Counsel the source does not tie to a specific party.","items":{"$ref":"#/components/schemas/DetailAttorney"},"type":"array"},"bail":{"description":"Bail entries on the case.","items":{"$ref":"#/components/schemas/DetailBail"},"type":"array"},"case":{"allOf":[{"$ref":"#/components/schemas/DetailCase"}],"description":"Case metadata; null when not a case record.","nullable":true},"charges":{"description":"Charges on the case.","items":{"$ref":"#/components/schemas/DetailCharge"},"type":"array"},"collateral":{"description":"Collateral descriptions on the filing.","items":{"type":"string"},"type":"array"},"creditors":{"description":"Creditors named on the filing.","items":{"type":"string"},"type":"array"},"debtors":{"description":"Debtors named on the filing.","items":{"$ref":"#/components/schemas/DetailLienDebtor"},"type":"array"},"defendant":{"allOf":[{"$ref":"#/components/schemas/DetailDefendant"}],"description":"Defendant details; null when not applicable.","nullable":true},"docket_entries":{"description":"Docket entries on the case.","items":{"$ref":"#/components/schemas/DetailDocketEntry"},"type":"array"},"entries":{"description":"For merged cases: one entry per raw source record, carrying this same shape.","items":{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"},"type":"array"},"filing":{"allOf":[{"$ref":"#/components/schemas/DetailFiling"}],"description":"Filing metadata; null when not a filing record.","nullable":true},"filing_relationship":{"description":"Source-provided filing relationship; null when unavailable.","nullable":true,"type":"string"},"meeting_341":{"allOf":[{"$ref":"#/components/schemas/DetailMeeting341"}],"description":"341 creditors' meeting; null when not applicable.","nullable":true},"parties":{"description":"Parties named on the case.","items":{"$ref":"#/components/schemas/DetailParty"},"type":"array"},"record_shape":{"description":"Names the source shape this detail carries.","nullable":true,"type":"string"},"related":{"description":"Related records as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValue"},"type":"array"},"secured_parties":{"description":"Secured parties named on the filing.","items":{"$ref":"#/components/schemas/DetailLienDebtor"},"type":"array"},"source":{"allOf":[{"$ref":"#/components/schemas/DetailSource"}],"description":"Provenance of the source record; null when unavailable.","nullable":true},"source_entry_id":{"description":"Source-provided source entry reference; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckRecordDetailSchema":{"description":"Supplementary source detail returned with include_section_detail=true. The summarised record is the stable typed interface.","properties":{"additional_fields":{"description":"Every source value not mapped to a named field, as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValueSchema"},"type":"array"},"arrests":{"description":"Arrest entries as source-provided key and value pairs.","items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"attorneys":{"description":"Counsel the source does not tie to a specific party.","items":{"$ref":"#/components/schemas/DetailAttorneySchema"},"type":"array"},"bail":{"description":"Bail entries on the case.","items":{"$ref":"#/components/schemas/DetailBailSchema"},"type":"array"},"case":{"allOf":[{"$ref":"#/components/schemas/DetailCaseSchema"}],"description":"Case metadata; null when not a case record.","nullable":true},"charges":{"description":"Charges on the case.","items":{"$ref":"#/components/schemas/DetailChargeSchema"},"type":"array"},"collateral":{"description":"Collateral descriptions on the filing.","items":{"type":"string"},"type":"array"},"creditors":{"description":"Creditors named on the filing.","items":{"type":"string"},"type":"array"},"debtors":{"description":"Debtors named on the filing.","items":{"$ref":"#/components/schemas/DetailLienDebtorSchema"},"type":"array"},"defendant":{"allOf":[{"$ref":"#/components/schemas/DetailDefendantSchema"}],"description":"Defendant details; null when not applicable.","nullable":true},"docket_entries":{"description":"Docket entries on the case.","items":{"$ref":"#/components/schemas/DetailDocketEntrySchema"},"type":"array"},"entries":{"description":"For merged cases: one entry per raw source record, carrying this same shape.","items":{"$ref":"#/components/schemas/BackgroundCheckRecordDetailSchema"},"type":"array"},"filing":{"allOf":[{"$ref":"#/components/schemas/DetailFilingSchema"}],"description":"Filing metadata; null when not a filing record.","nullable":true},"filing_relationship":{"description":"Source-provided filing relationship; null when unavailable.","nullable":true,"type":"string"},"meeting_341":{"allOf":[{"$ref":"#/components/schemas/DetailMeeting341Schema"}],"description":"341 creditors' meeting; null when not applicable.","nullable":true},"parties":{"description":"Parties named on the case.","items":{"$ref":"#/components/schemas/DetailPartySchema"},"type":"array"},"record_shape":{"description":"Names the source shape this detail carries.","nullable":true,"type":"string"},"related":{"description":"Related records as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValueSchema"},"type":"array"},"secured_parties":{"description":"Secured parties named on the filing.","items":{"$ref":"#/components/schemas/DetailLienDebtorSchema"},"type":"array"},"source":{"allOf":[{"$ref":"#/components/schemas/DetailSourceSchema"}],"description":"Provenance of the source record; null when unavailable.","nullable":true},"source_entry_id":{"description":"Source-provided source entry reference; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"BackgroundCheckResolution":{"properties":{"aka_names":{"description":"Also-known-as names on the resolved entity.","items":{"type":"string"},"type":"array"},"entity_not_found":{"description":"True when no matching entity was found.","type":"boolean"},"match_threshold":{"description":"The deciding evidence-score floor; null on older records.","nullable":true,"type":"number"},"method":{"description":"Resolving search step: ssn_only, name_state_dob, name_address, name_state, corp_id, manual_recovery (a reviewer manually selected the match), or linked_entity_id (no search ran - the report naming this affiliation already identified them).","nullable":true,"type":"string"},"report_retry_attempted":{"description":"True when a failed report retrieval was retried.","type":"boolean"},"report_unavailable":{"description":"True when a match resolved but the report pull failed (distinct from a search-time error).","type":"boolean"},"score_version":{"description":"Version of the match-scoring model; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Resolution status: found, not_found, or error.","enum":["found","not_found","error"],"type":"string"},"winner_ref":{"description":"Ref into the subject's candidates[] for the resolved match; null when unresolved.","nullable":true,"type":"string"}},"required":["entity_not_found","report_retry_attempted","report_unavailable","status"],"type":"object"},"BackgroundCheckResponseSchema":{"description":"Dates use YYYY-MM-DD. Amounts are decimal strings. Nullable source fields return null. SSNs remain masked; full SSNs never appear.","properties":{"affiliations":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckAffiliationsBlock"}],"description":"Reports requested for the subjects' affiliated businesses and people; null when none requested.","nullable":true},"end_user_id":{"description":"Heron ID of the end user","type":"string"},"overall":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckOverall"}],"description":"Headline outcome across all background checks; null until an outcome is available.","nullable":true},"policy":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckPolicy"}],"description":"Outcome of each configured background-check policy check; null until available.","nullable":true},"processing_stage":{"description":"While processing: searching, pulling_reports, or analysing. Null otherwise.","enum":["searching","pulling_reports","analysing",null],"nullable":true,"type":"string"},"status":{"description":"Run lifecycle: never_run, processing, succeeded, failed, or missing_input_data.","enum":["never_run","processing","succeeded","failed","missing_input_data"],"type":"string"},"subjects":{"description":"One entry per searched subject: owner_1, owner_2 when present, and business.","items":{"$ref":"#/components/schemas/BackgroundCheckSubject"},"type":"array"}},"required":["end_user_id","status","subjects"],"type":"object"},"BackgroundCheckSection":{"description":"A subject's findings for one record type. Record fields differ by section key.","properties":{"addresses":{"description":"Known addresses. Populated only on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/ProfileAddress"},"type":"array"},"akas":{"description":"Also-known-as names. Populated only on the `profile` section; empty elsewhere.","items":{"type":"string"},"type":"array"},"business_contacts":{"description":"Business contacts shown on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/BusinessContact"},"type":"array"},"business_profile_details":{"description":"Customer-safe business identity and profile details shown on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/BusinessProfileRecordSchema"},"type":"array"},"corporate_records":{"description":"Business corporate filings shown on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/CorporateRecordSchema"},"type":"array"},"count":{"description":"Number of records in the section.","type":"integer"},"death_records":{"description":"Death records. Populated only on a person's `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/DeathRecord"},"type":"array"},"emails":{"description":"Known email addresses. Populated only on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/ProfileEmail"},"type":"array"},"entry_count":{"description":"Number of underlying source entries before roll-up; null for sections without combined records.","nullable":true,"type":"integer"},"flag":{"description":"Policy flag for this section: ok or fail; null when no policy check cites it.","enum":["ok","fail",null],"nullable":true,"type":"string"},"identity_fraud_flags":{"description":"Identity-fraud signals. Populated only on a person's `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/IdentityFraudFlag"},"type":"array"},"key":{"description":"Section identifier: profile, criminal, bankruptcy, liens, lawsuits, marriage, affiliations, ofac, corporate, ucc, property, or industry.","enum":["profile","criminal","bankruptcy","liens","ucc","property","lawsuits","marriage","affiliations","corporate","ofac","industry"],"type":"string"},"label":{"description":"Display label for the section.","type":"string"},"phones":{"description":"Populated only on the `profile` section; empty elsewhere.","items":{"$ref":"#/components/schemas/ProfilePhone"},"type":"array"},"records":{"description":"Section rows. Fields differ by section key; the profile section has no rows.","items":{"oneOf":[{"$ref":"#/components/schemas/CriminalRecordSchema"},{"$ref":"#/components/schemas/CriminalSectionRecordSchema"},{"$ref":"#/components/schemas/BankruptcyRecordSchema"},{"$ref":"#/components/schemas/LienJudgmentRecordSchema"},{"$ref":"#/components/schemas/LawsuitRecordSchema"},{"$ref":"#/components/schemas/MarriageRecordSchema"},{"$ref":"#/components/schemas/AssociateRecordSchema"},{"$ref":"#/components/schemas/OfacRecordSchema"},{"$ref":"#/components/schemas/CorporateRecordSchema"},{"$ref":"#/components/schemas/UCCRecordSchema"},{"$ref":"#/components/schemas/PropertyRecordSchema"},{"$ref":"#/components/schemas/BusinessProfileRecordSchema"}]},"type":"array"},"severity":{"description":"Highest record severity in the section: none, low, medium, or high.","enum":["none","low","medium","high"],"type":"string"},"ssn_issuance":{"allOf":[{"$ref":"#/components/schemas/ProfileSsnIssuance"}],"description":"SSN issuance details. Populated only on the `profile` section; null elsewhere.","nullable":true},"work_affiliations":{"description":"Populated only on the `affiliations` section; empty elsewhere.","items":{"$ref":"#/components/schemas/WorkAffiliation"},"type":"array"}},"required":["count","key","label","records","severity"],"type":"object"},"BackgroundCheckSubject":{"properties":{"application":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckApplication"}],"description":"Identity searched, taken from the application data."},"candidates":{"description":"Every deduplicated candidate returned across the subject's searches, with its match score.","items":{"$ref":"#/components/schemas/BackgroundCheckCandidate"},"type":"array"},"case_ref":{"description":"Reserved case reference; null in normal use.","nullable":true,"type":"string"},"decision":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckDecision"}],"description":"Audit of how the winning candidate was selected; null when no scoring decision was needed.","nullable":true},"duns_numbers":{"description":"D&B DUNS numbers of the resolved business. Empty for person subjects.","items":{"type":"string"},"type":"array"},"firmographics":{"allOf":[{"$ref":"#/components/schemas/BusinessFirmographics"}],"description":"Business facts grouped by source; null for person subjects.","nullable":true},"key":{"description":"Subject identifier: owner_1, owner_2, or business.","enum":["owner_1","owner_2","business"],"type":"string"},"kind":{"description":"Subject type: person or business.","enum":["person","business"],"type":"string"},"name":{"description":"Label for the subject: the matched record's filed name for a business, the searched name for a person. Null when neither is known.","nullable":true,"type":"string"},"related_party_officers":{"description":"Business-filing officers who match a related party on the deal.","items":{"type":"string"},"type":"array"},"resolution":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckResolution"}],"description":"How and whether the subject was matched."},"role":{"description":"Subject's role on the deal; null when unavailable.","nullable":true,"type":"string"},"searches":{"description":"Search waterfall in attempted order, including each step's inputs and outcome.","items":{"$ref":"#/components/schemas/SearchAttempt"},"type":"array"},"sections":{"description":"Report findings grouped by record type.","items":{"$ref":"#/components/schemas/BackgroundCheckSection"},"type":"array"},"unreported_officers":{"description":"Officers on active business filings who are not listed as owners on the application. Empty for person subjects.","items":{"type":"string"},"type":"array"}},"required":["application","candidates","firmographics","key","kind","resolution","searches","sections","unreported_officers"],"type":"object"},"BacktestBaselineSection":{"properties":{"evaluated_at":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"policy_version":{"nullable":true,"readOnly":true,"type":"integer"}},"type":"object"},"BacktestCheckChange":{"properties":{"check_identity":{"description":"What the check reads, which is how it is named","readOnly":true,"type":"string"},"check_name":{"nullable":true,"readOnly":true,"type":"string"},"deal_count":{"description":"Deals whose outcome changed with this check moving","readOnly":true,"type":"integer"},"section_name":{"readOnly":true,"type":"string"}},"type":"object"},"BacktestCheckDefinition":{"properties":{"auto_decline":{"readOnly":true,"type":"boolean"},"ignore_metric_availability":{"readOnly":true,"type":"boolean"},"is_mandatory":{"readOnly":true,"type":"boolean"},"on_failure":{"readOnly":true,"type":"string"},"type":{"nullable":true,"readOnly":true,"type":"string"},"value":{"nullable":true,"readOnly":true}},"type":"object"},"BacktestCheckFilter":{"properties":{"check_identity":{"minLength":1,"type":"string"},"result":{"enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"section_heron_id":{"type":"string"}},"required":["result","section_heron_id"],"type":"object"},"BacktestCheckSide":{"properties":{"availability":{"nullable":true,"readOnly":true,"type":"string"},"definition":{"allOf":[{"$ref":"#/components/schemas/BacktestCheckDefinition"}],"readOnly":true},"effective_result":{"readOnly":true,"type":"string"},"result":{"readOnly":true,"type":"string"},"source":{"enum":["reused","recomputed","live"],"readOnly":true},"value":{"nullable":true,"readOnly":true,"type":"string"},"value_type":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"BacktestCreateSchema":{"properties":{"baseline":{"default":"active","description":"Compare with the active policy or each deal's stored evaluations","enum":["active","as_evaluated"]},"check_filter":{"allOf":[{"$ref":"#/components/schemas/BacktestCheckFilter"}],"nullable":true},"description":{"description":"Free text describing what this run is testing","maxLength":2000,"nullable":true,"type":"string"},"end_user_heron_ids":{"description":"Specific deals to run, in request order; cannot be combined with selection filters","items":{"type":"string"},"maxItems":1000,"minItems":1,"nullable":true,"type":"array"},"limit":{"description":"Deals to include, at most 1000 (default 200)","maximum":1000,"minimum":1,"nullable":true,"type":"integer"},"window_days":{"description":"How far back to look for deals; the account's configured window when omitted","minimum":1,"nullable":true,"type":"integer"},"window_end":{"description":"Exclusive deal creation bound; requires window_start and is clamped to now when in the future","format":"date-time","nullable":true,"type":"string"},"window_start":{"description":"Inclusive deal creation bound; requires window_end and cannot be combined with window_days","format":"date-time","nullable":true,"type":"string"},"with_policy_result":{"description":"Only deals whose last policy result was one of ['failed', 'missing_data', 'passed', 'review_required']; omit for all","items":{"enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"minItems":1,"nullable":true,"type":"array"}},"type":"object"},"BacktestDealCountSchema":{"properties":{"matching_deal_count":{"readOnly":true,"type":"integer"},"selected_deal_count":{"readOnly":true,"type":"integer"}},"type":"object"},"BacktestDealSchema":{"properties":{"baseline":{"items":{"$ref":"#/components/schemas/BacktestBaselineSection"},"nullable":true,"readOnly":true,"type":"array"},"baseline_result":{"description":"The baseline version's verdict, null when it could not be evaluated","enum":["passed","failed","review_required","missing_data","execution_error","skipped","mandatory_check_missing_data",null],"nullable":true,"readOnly":true},"candidate_result":{"description":"The candidate version's verdict, null when it could not be evaluated","enum":["passed","failed","review_required","missing_data","execution_error","skipped","mandatory_check_missing_data",null],"nullable":true,"readOnly":true},"check_flips":{"items":{"$ref":"#/components/schemas/CheckFlip"},"readOnly":true,"type":"array"},"end_user_created":{"description":"When the deal arrived; used as the live evaluation clock when no clock is provided","format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"},"end_user_name":{"nullable":true,"readOnly":true,"type":"string"},"evaluated_as_of":{"description":"The clock both sides were read under","format":"date-time","readOnly":true,"type":"string"},"evaluation_result":{"enum":["same_outcome","outcome_changed","cannot_compare"],"readOnly":true},"id":{"description":"Cursor for fetching rows recorded after this one","readOnly":true,"type":"integer"},"note":{"description":"Why the deal was classified this way, in English","readOnly":true,"type":"string"},"sections":{"items":{"$ref":"#/components/schemas/BacktestSection"},"readOnly":true,"type":"array"}},"type":"object"},"BacktestListingSchema":{"properties":{"baseline_mode":{"enum":["active","as_evaluated"],"readOnly":true},"baseline_version":{"description":"Version number the run compared against","readOnly":true,"type":"integer"},"candidate_version":{"description":"Version number the run tested","readOnly":true,"type":"integer"},"created":{"format":"date-time","readOnly":true,"type":"string"},"deal_count":{"description":"Deals the run claimed at setup","nullable":true,"readOnly":true,"type":"integer"},"deal_set_params":{"allOf":[{"$ref":"#/components/schemas/DealSetParams"}],"readOnly":true},"description":{"nullable":true,"readOnly":true,"type":"string"},"error":{"description":"Why the run failed, null unless it did","nullable":true,"readOnly":true,"type":"string"},"finished_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"result_counts":{"additionalProperties":{"type":"integer"},"description":"Deals per evaluation_result, every bucket present even at zero","readOnly":true,"type":"object"},"skipped_end_user_heron_ids":{"items":{"$ref":"#/components/schemas/SkippedDeal"},"readOnly":true,"type":"array"},"stale":{"description":"The version has been edited since this run was asked for","readOnly":true,"type":"boolean"},"started_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["pending","running","complete","failed"],"readOnly":true},"triggered_by":{"readOnly":true,"type":"string"}},"type":"object"},"BacktestSchema":{"properties":{"baseline_mode":{"enum":["active","as_evaluated"],"readOnly":true},"baseline_version":{"description":"Version number the run compared against","readOnly":true,"type":"integer"},"candidate_version":{"description":"Version number the run tested","readOnly":true,"type":"integer"},"created":{"format":"date-time","readOnly":true,"type":"string"},"deal_count":{"description":"Deals the run claimed at setup","nullable":true,"readOnly":true,"type":"integer"},"deal_set_params":{"allOf":[{"$ref":"#/components/schemas/DealSetParams"}],"readOnly":true},"description":{"nullable":true,"readOnly":true,"type":"string"},"error":{"description":"Why the run failed, null unless it did","nullable":true,"readOnly":true,"type":"string"},"finished_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"skipped_end_user_heron_ids":{"items":{"$ref":"#/components/schemas/SkippedDeal"},"readOnly":true,"type":"array"},"stale":{"description":"The version has been edited since this run was asked for","readOnly":true,"type":"boolean"},"started_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["pending","running","complete","failed"],"readOnly":true},"summary":{"allOf":[{"$ref":"#/components/schemas/BacktestSummary"}],"readOnly":true},"triggered_by":{"readOnly":true,"type":"string"}},"type":"object"},"BacktestSection":{"properties":{"baseline_result":{"nullable":true,"readOnly":true,"type":"string"},"candidate_result":{"nullable":true,"readOnly":true,"type":"string"},"checks":{"items":{"$ref":"#/components/schemas/BacktestSectionCheck"},"readOnly":true,"type":"array"},"heron_id":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"}},"type":"object"},"BacktestSectionCheck":{"properties":{"baseline":{"allOf":[{"$ref":"#/components/schemas/BacktestCheckSide"}],"nullable":true,"readOnly":true},"candidate":{"allOf":[{"$ref":"#/components/schemas/BacktestCheckSide"}],"nullable":true,"readOnly":true},"change":{"enum":["unchanged","threshold_changed","added","dropped","flags_changed"],"readOnly":true},"check_identity":{"readOnly":true,"type":"string"},"check_name":{"nullable":true,"readOnly":true,"type":"string"},"flipped":{"readOnly":true,"type":"boolean"}},"type":"object"},"BacktestSelectionSchema":{"properties":{"check_filter":{"allOf":[{"$ref":"#/components/schemas/BacktestCheckFilter"}],"nullable":true},"end_user_heron_ids":{"description":"Specific deals to run, in request order; cannot be combined with selection filters","items":{"type":"string"},"maxItems":1000,"minItems":1,"nullable":true,"type":"array"},"limit":{"description":"Deals to include, at most 1000 (default 200)","maximum":1000,"minimum":1,"nullable":true,"type":"integer"},"window_days":{"description":"How far back to look for deals; the account's configured window when omitted","minimum":1,"nullable":true,"type":"integer"},"window_end":{"description":"Exclusive deal creation bound; requires window_start and is clamped to now when in the future","format":"date-time","nullable":true,"type":"string"},"window_start":{"description":"Inclusive deal creation bound; requires window_end and cannot be combined with window_days","format":"date-time","nullable":true,"type":"string"},"with_policy_result":{"description":"Only deals whose last policy result was one of ['failed', 'missing_data', 'passed', 'review_required']; omit for all","items":{"enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"minItems":1,"nullable":true,"type":"array"}},"type":"object"},"BacktestSummary":{"properties":{"changed_checks":{"description":"Checks behind the deals whose outcome changed, most-affected first; empty until the run finishes","items":{"$ref":"#/components/schemas/BacktestCheckChange"},"readOnly":true,"type":"array"},"recorded_deal_count":{"description":"Deals recorded so far; against deal_count this is the progress","readOnly":true,"type":"integer"},"result_counts":{"additionalProperties":{"type":"integer"},"description":"Deals per evaluation_result, every bucket present even at zero","readOnly":true,"type":"object"}},"type":"object"},"BalanceSheetCategories":{"properties":{"current_assets":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"current_liabilities":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"equity":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"fixed_assets":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"non_current_liabilities":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"other_assets":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"}},"type":"object"},"BalanceSheetReport":{"properties":{"extracted_totals":{"allOf":[{"$ref":"#/components/schemas/BalanceSheetTotalsGroup"}],"nullable":true},"line_items":{"items":{"$ref":"#/components/schemas/BalanceSheetReportLineItem"},"nullable":true,"type":"array"},"summed_totals":{"allOf":[{"$ref":"#/components/schemas/BalanceSheetTotalsGroup"}],"nullable":true},"time_period":{"allOf":[{"$ref":"#/components/schemas/BalanceSheetTimePeriod"}],"nullable":true}},"type":"object"},"BalanceSheetReportLineItem":{"properties":{"amount":{"nullable":true,"type":"number"},"category":{"enum":["current_assets","fixed_assets","other_assets","current_liabilities","non_current_liabilities","equity",null],"nullable":true,"type":"string"},"id":{"nullable":true,"type":"string"},"label":{"nullable":true,"type":"string"},"row_id":{"nullable":true,"type":"string"},"row_index":{"nullable":true,"type":"integer"},"sub_category":{"nullable":true,"type":"string"}},"type":"object"},"BalanceSheetSchema":{"properties":{"currency":{"nullable":true,"type":"string"},"is_reconciled":{"nullable":true,"type":"boolean"},"reports":{"items":{"$ref":"#/components/schemas/BalanceSheetReport"},"nullable":true,"type":"array"}},"type":"object"},"BalanceSheetTimePeriod":{"properties":{"column_index":{"nullable":true,"type":"integer"},"date":{"format":"date","nullable":true,"type":"string"},"label":{"nullable":true,"type":"string"},"time_interval":{"enum":["year","quarter","month","interim_one_off",null],"nullable":true,"type":"string"}},"type":"object"},"BalanceSheetTotalsGroup":{"properties":{"current_ratio":{"nullable":true,"type":"number"},"debt_to_equity_ratio":{"nullable":true,"type":"number"},"is_reconciled":{"nullable":true,"type":"boolean"},"total_assets":{"nullable":true,"type":"number"},"total_current_assets":{"nullable":true,"type":"number"},"total_current_liabilities":{"nullable":true,"type":"number"},"total_equity":{"nullable":true,"type":"number"},"total_fixed_assets":{"nullable":true,"type":"number"},"total_liabilities":{"nullable":true,"type":"number"},"total_liabilities_and_equity":{"nullable":true,"type":"number"},"total_non_current_liabilities":{"nullable":true,"type":"number"},"total_other_assets":{"nullable":true,"type":"number"},"unreconciled_amount":{"nullable":true,"type":"number"}},"type":"object"},"BankStatementSummaryRow":{"properties":{"actual_holdback_percentage":{"description":"Actual MCA payments to revenue as % (raw repayment amounts)","nullable":true,"type":"number"},"additional_no_od":{"description":"Overdraft-item count a bank reports as a statement value for items absent from the transaction list. These items are not included in the transaction-derived no_od field. Null when the statement does not report a count.","nullable":true,"type":"integer"},"average_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Average balance"},"average_balance_to_revenue_ratio":{"description":"Average balance divided by total revenue","type":"number"},"business_day_average_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Average balance over weekdays excluding public holidays","nullable":true},"days_covered":{"description":"Number of distinct statement days covered in this calendar month","nullable":true,"type":"integer"},"days_in_month":{"description":"Total number of days in this calendar month","nullable":true,"type":"integer"},"dd_reversals":{"description":"Number of DD Reversals","type":"integer"},"ending_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Ending balance"},"expected_mca_debits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Expected MCA debits amount"},"holdback_percentage":{"description":"Expected MCA payments to revenue as % (with frequency multiplier)","nullable":true,"type":"number"},"is_mtd":{"description":"Whether this row represents a month-to-date (MTD) partial statement","type":"boolean"},"is_unreconcilable":{"description":"True when the statement period has no usable balance data for reconciliation (e.g. an unreconciled partial-month statement)","nullable":true,"type":"boolean"},"low_balance_days":{"description":"Number of days where end of day balance falls below low balance threshold","type":"integer"},"mca_credits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"MCA credits amount"},"mca_debits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"MCA debits amount"},"negative_balance_days":{"description":"Number of days with negative balance","type":"integer"},"no_deposits":{"description":"Number of deposit transactions","type":"integer"},"no_mca_credits":{"description":"Number of MCA credit transactions","type":"integer"},"no_mca_debits":{"description":"Number of MCA debit transactions","type":"integer"},"no_nsf":{"description":"Number of NSF transactions (unambiguous NSF-only category labels).","type":"integer"},"no_od":{"description":"Number of overdraft transactions (unambiguous OD-only category labels).","type":"integer"},"no_od_nsf":{"description":"Total overdraft/NSF fees: overdraft fees + NSF fees + ambiguous fees.","type":"integer"},"no_overdraft_transactions":{"description":"Number of transactions where the resulting balance falls below 0","type":"integer"},"no_revenue":{"description":"Number of revenue transactions","type":"integer"},"no_withdrawals":{"description":"Number of withdrawals transactions","type":"integer"},"non_revenue":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Non-revenue amount"},"period_end_date":{"description":"The last day covered by the statement period (e.g. a partial April statement covering Apr 1\u201315 has period_end_date=Apr 15, while a full April statement with data only through Apr 15 would still show Apr 30)","format":"date","nullable":true,"type":"string"},"period_start_date":{"description":"The first day covered by the statement period (e.g. a partial April statement covering Apr 5\u201315 has period_start_date=Apr 5)","format":"date","nullable":true,"type":"string"},"starting_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Starting balance for the period"},"total_deposits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total deposit amount"},"total_revenue":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total revenue amount"},"total_withdrawals":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total withdrawal amount"}},"type":"object"},"BankStatementSummarySettings":{"properties":{"monthly_summary_averages_and_totals_exclude_partial_months":{"type":"boolean"}},"type":"object"},"BankruptcyRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"chapter":{"description":"Bankruptcy chapter number; null when unavailable.","nullable":true,"type":"integer"},"chapter_kind":{"description":"Bankruptcy chapter classification: chapter_7, chapter_11, chapter_12, chapter_13, other, or unknown.","enum":["chapter_7","chapter_11","chapter_12","chapter_13","other","unknown"]},"debtor_name":{"description":"Debtor named on the filing.","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"document_id":{"description":"Source document reference; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"is_open":{"description":"True when status_kind is neither discharged nor dismissed.","type":"boolean"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"status":{"description":"Bankruptcy status value matching status_kind.","nullable":true,"type":"string"},"status_kind":{"description":"Bankruptcy status classification: filed, discharged, dismissed, or unknown. Discharged and dismissed are closed; filed and unknown are open.","enum":["filed","discharged","dismissed","unknown"]},"total_assets":{"description":"Total scheduled assets as a decimal string; null when the filing does not record them.","nullable":true,"type":"number"},"total_liabilities":{"description":"Total scheduled liabilities as a decimal string; null when the filing does not record them.","nullable":true,"type":"number"}},"type":"object"},"BooleanCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"value":{"type":"boolean"}},"type":"object"},"BrokerDealDecisionCounts":{"properties":{"approved":{"readOnly":true,"type":"integer"},"declined":{"readOnly":true,"type":"integer"},"pending":{"readOnly":true,"type":"integer"}},"type":"object"},"BrokerEndUserSummary":{"properties":{"broker_link_status":{"description":"Review and deal-link state for this broker end user.","enum":["unlinked","linked","dismissed","reclassified",null],"nullable":true,"readOnly":true},"classification":{"description":"How broker intake classified this end user's email thread.","enum":["submission","decision","other"],"readOnly":true},"confidence":{"description":"Aggregated confidence for the end user across all transactions; between 0 and 1","example":0.42,"readOnly":true,"type":"number"},"created":{"description":"When the end user was created in Heron system","example":"2026-08-25T22:12:38.069117","format":"date-time","readOnly":true,"type":"string"},"criteria":{"description":"List of scorecard metrics","items":{"$ref":"#/components/schemas/Metric"},"readOnly":true,"type":"array"},"crm_sync_result":{"allOf":[{"$ref":"#/components/schemas/CrmSyncEvent"}],"nullable":true},"data_sources":{"description":"List of data source summaries for the end user","items":{"$ref":"#/components/schemas/DataSource"},"readOnly":true,"type":"array"},"deal_stage":{"description":"Where this deal sits in the broker pipeline.","enum":["ready","missing_docs","shopped","offers_in"],"readOnly":true},"decision_counts":{"allOf":[{"$ref":"#/components/schemas/BrokerDealDecisionCounts"}],"nullable":true,"readOnly":true},"duplicate_count":{"description":"Number of duplicate submission records hidden behind this deal.","readOnly":true,"type":"integer"},"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"files":{"items":{"$ref":"#/components/schemas/EndUserEndUserFile"},"type":"array"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"in_human_review":{"description":"Whether an active document is pending human review","readOnly":true,"type":"boolean"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"type":"boolean"},"last_processed_at":{"description":"When the end user was last successfully processed in Heron system","example":"2026-10-06T22:12:38.069529","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the end user was last updated in Heron system","example":"2026-10-06T22:12:38.069178","format":"date-time","readOnly":true,"type":"string"},"latest_activity_at":{"description":"Latest creation, funder submission, or current decision timestamp.","format":"date-time","nullable":true,"readOnly":true,"type":"string"},"linked_deal_end_user_heron_id":{"description":"Heron ID of the deal linked to this broker end user.","nullable":true,"readOnly":true,"type":"string"},"linked_deal_name":{"description":"Display name of the deal linked to this broker end user.","nullable":true,"readOnly":true,"type":"string"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"},"policy_evaluation_results":{"description":"One entry per use_case, carrying the latest evaluation's policy identity and result","items":{"$ref":"#/components/schemas/PolicyEvaluationResult"},"type":"array"},"policy_evaluations":{"items":{"enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"type":"array"},"profit_and_loss_layout":{"nullable":true},"status":{"description":"Status of end user; 'ready' triggers async processing, 'review_requested' triggers manual review request","enum":["new","ready","processed","reviewed","review_requested","failed"],"example":"ready","type":"string"},"submitting_brokers":{"description":"Brokers who submitted this deal \u2014 the discriminator between same-named merchants.","items":{"$ref":"#/components/schemas/SubmittingBroker"},"readOnly":true,"type":"array"},"tags":{"description":"Tags currently applied to this end user, read-only. Absent unless the endpoint returns them.","items":{"$ref":"#/components/schemas/TagSchema"},"readOnly":true,"type":"array"}},"required":["end_user_id"],"type":"object"},"BrokerEndUserSummaryParams":{"properties":{"broker_classification":{"description":"Filter by broker intake classification.","enum":["submission","decision","other",null],"nullable":true},"broker_link_status":{"description":"Filter by broker decision review state.","enum":["unlinked","linked","dismissed","reclassified",null],"nullable":true},"criteria":{"additionalProperties":{},"description":"Information about the end user that can be used as rules for underwriting","example":{"history_days":{"value":40}},"nullable":true,"readOnly":true,"type":"object"},"deal_stage":{"description":"Filter by broker deal stage.","enum":["ready","missing_docs","shopped","offers_in",null],"nullable":true},"end_user_id":{"description":"Filter by ID associated with end_user_id field in transactions","example":"your_end_user_id","nullable":true,"type":"string"},"funder_heron_id":{"description":"Filter by the funder on the end user's submission lane.","nullable":true,"type":"string"},"heron_id":{"description":"Unique ID generated by Heron","example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"},"holds_decision":{"description":"Filter to end users holding a live funder verdict on their own submission lane.","nullable":true,"type":"boolean"},"in_human_review":{"description":"Filter by whether an active document is pending human review","nullable":true,"type":"boolean"},"include_decision_counts":{"default":false,"description":"Include funder lane decision counts for submission rows.","example":true,"type":"boolean"},"include_tags":{"default":false,"description":"Whether to include the tags applied to each end user","example":true,"type":"boolean"},"include_updates_in_interval":{"default":false,"description":"When true, interval_start and interval_end match end users created or last updated within the window. Bounds are inclusive only when this flag is true.","type":"boolean"},"interval_end":{"format":"date-time","nullable":true,"type":"string"},"interval_start":{"format":"date-time","nullable":true,"type":"string"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"nullable":true,"type":"boolean"},"limit":{"description":"Pagination limit per page (optional). If provided, 'page' must also be provided.","maximum":10000,"minimum":1,"nullable":true,"type":"integer"},"name":{"description":"Filter by name associated with end user","example":"your_end_user_name","nullable":true,"type":"string"},"order_by":{"default":"last_updated_desc","description":"Order to return broker end users by","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc","latest_activity_desc"],"type":"string"},"page":{"description":"Pagination page number (optional). If provided, 'limit' must also be provided.","minimum":1,"nullable":true,"type":"integer"},"status":{"description":"Filter by status of end user","enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"},"tags":{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","items":{"type":"string"},"nullable":true,"type":"array"},"with_crm_sync_result":{"enum":["success","failure","no_sync_attempted",null],"nullable":true},"with_policy_result":{"description":"Only end users whose policy result was this.","enum":["passed","failed","review_required","missing_data","execution_error",null],"nullable":true}},"type":"object"},"BrokerFunderLink":{"additionalProperties":false,"properties":{"broker_user_id":{"readOnly":true,"type":"integer"},"classification_instructions_override":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"external_reference_id":{"nullable":true,"readOnly":true,"type":"integer"},"extraction_instructions_override":{"nullable":true,"readOnly":true,"type":"string"},"funder_heron_id":{"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"offer_calculation_constants_override":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"offer_email_instructions_override":{"nullable":true,"readOnly":true,"type":"string"},"offer_portal_instructions_override":{"nullable":true,"readOnly":true,"type":"string"},"offer_source_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"staging_submission_integration_id":{"nullable":true,"readOnly":true,"type":"integer"},"submission_cc_email_addresses":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"},"submission_channel_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"submission_email_address":{"nullable":true,"readOnly":true,"type":"string"},"submission_email_subject_prefix":{"nullable":true,"readOnly":true,"type":"string"},"submission_integration_id":{"nullable":true,"readOnly":true,"type":"integer"}},"type":"object"},"BrokerFunderLinkCreateSchema":{"additionalProperties":false,"properties":{"additional_allowed_submission_email_addresses":{"items":{"format":"email","type":"string"},"nullable":true,"type":"array"},"broker_heron_id":{"description":"Heron ID of the broker to link","nullable":true,"type":"string"},"broker_user_id":{"type":"integer"},"classification_instructions_override":{"nullable":true,"type":"string"},"external_reference_id":{"nullable":true,"type":"integer"},"extraction_instructions_override":{"nullable":true,"type":"string"},"funder_heron_id":{"type":"string"},"offer_calculation_constants_override":{"additionalProperties":{},"nullable":true,"type":"object"},"offer_email_instructions_override":{"nullable":true,"type":"string"},"offer_portal_instructions_override":{"nullable":true,"type":"string"},"offer_source_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"sender_mode":{"enum":["legacy_outbound_only","dual","reply_domain",null],"nullable":true},"staging_submission_integration_id":{"nullable":true,"type":"integer"},"submission_cc_email_addresses":{"items":{"type":"string"},"nullable":true,"type":"array"},"submission_channel_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_email_address":{"nullable":true,"type":"string"},"submission_email_subject_prefix":{"nullable":true,"type":"string"},"submission_integration_id":{"nullable":true,"type":"integer"}},"required":["broker_user_id","funder_heron_id"],"type":"object"},"BrokerFunderLinkUpdateSchema":{"additionalProperties":false,"properties":{"additional_allowed_submission_email_addresses":{"items":{"format":"email","type":"string"},"nullable":true,"type":"array"},"broker_heron_id":{"description":"Heron ID of the broker to link","nullable":true,"type":"string"},"broker_user_id":{"type":"integer"},"classification_instructions_override":{"nullable":true,"type":"string"},"external_reference_id":{"nullable":true,"type":"integer"},"extraction_instructions_override":{"nullable":true,"type":"string"},"funder_heron_id":{"type":"string"},"offer_calculation_constants_override":{"additionalProperties":{},"nullable":true,"type":"object"},"offer_email_instructions_override":{"nullable":true,"type":"string"},"offer_portal_instructions_override":{"nullable":true,"type":"string"},"offer_source_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"sender_mode":{"enum":["legacy_outbound_only","dual","reply_domain",null],"nullable":true},"staging_submission_integration_id":{"nullable":true,"type":"integer"},"submission_cc_email_addresses":{"items":{"type":"string"},"nullable":true,"type":"array"},"submission_channel_override":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_email_address":{"nullable":true,"type":"string"},"submission_email_subject_prefix":{"nullable":true,"type":"string"},"submission_integration_id":{"nullable":true,"type":"integer"}},"required":["broker_user_id","funder_heron_id"],"type":"object"},"BrokerFunderPolicy":{"additionalProperties":false,"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"funder":{"allOf":[{"$ref":"#/components/schemas/BrokerFunderPolicyFunder"}],"readOnly":true},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"matching_priority":{"nullable":true,"readOnly":true,"type":"integer"},"policy":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"}},"type":"object"},"BrokerFunderPolicyFunder":{"additionalProperties":false,"properties":{"heron_id":{"readOnly":true,"type":"string"},"logo_url":{"nullable":true,"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"}},"type":"object"},"BrokerFunderPolicyUpdateItem":{"additionalProperties":false,"properties":{"funder_heron_id":{"type":"string"},"matching_priority":{"nullable":true,"type":"integer"},"policy":{"additionalProperties":{},"nullable":true,"type":"object"}},"required":["funder_heron_id"],"type":"object"},"BrokerFunderPolicyUploadJobSchema":{"additionalProperties":false,"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"error_count":{"readOnly":true,"type":"integer"},"error_details":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"error_message":{"nullable":true,"readOnly":true,"type":"string"},"filename":{"nullable":true,"readOnly":true,"type":"string"},"finished_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"processed_count":{"readOnly":true,"type":"integer"},"results_summary":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"started_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["queued","processing","completed","failed"],"readOnly":true},"success_count":{"readOnly":true,"type":"integer"},"total_count":{"nullable":true,"readOnly":true,"type":"integer"}},"type":"object"},"BrokerFunderPolicyUploadSchema":{"additionalProperties":false,"properties":{"file_base64":{"description":"Base64 encoded file bytes","type":"string"},"filename":{"description":"Name of file","type":"string"}},"required":["file_base64","filename"],"type":"object"},"BrokerLifecycleFunderSubmission":{"additionalProperties":false,"properties":{"attempts":{"items":{"$ref":"#/components/schemas/FunderSubmissionAttempt"},"readOnly":true,"type":"array"},"configured_channel":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"created":{"format":"date-time","readOnly":true,"type":"string"},"current_decision":{"allOf":[{"$ref":"#/components/schemas/FunderSubmissionDecision"}],"nullable":true,"readOnly":true},"decisions":{"items":{"$ref":"#/components/schemas/FunderSubmissionDecision"},"readOnly":true,"type":"array"},"funder":{"allOf":[{"$ref":"#/components/schemas/Funder1"}],"readOnly":true},"heron_id":{"readOnly":true,"type":"string"},"send_eligibility":{"allOf":[{"$ref":"#/components/schemas/SendEligibility"}],"readOnly":true},"should_send":{"nullable":true,"readOnly":true,"type":"boolean"},"status":{"enum":["pending","in_progress","submitted_to_funder","invalid_data_for_funder","submission_failed","approved","declined",null],"nullable":true,"readOnly":true},"submission_configured":{"nullable":true,"readOnly":true,"type":"boolean"},"submission_reference_id":{"nullable":true,"readOnly":true,"type":"string"},"submission_status_message":{"nullable":true,"readOnly":true,"type":"string"},"submitted_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"BrokerLifecyclePage":{"additionalProperties":false,"properties":{"broker_link_status":{"enum":["unlinked","linked","dismissed","reclassified",null],"nullable":true,"readOnly":true},"classification":{"enum":["submission","decision","other",null],"nullable":true,"readOnly":true},"has_more":{"readOnly":true,"type":"boolean"},"items":{"items":{"$ref":"#/components/schemas/BrokerLifecycleFunderSubmission"},"readOnly":true,"type":"array"},"limit":{"readOnly":true,"type":"integer"},"linked_deal_end_user_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"linked_deal_name":{"nullable":true,"readOnly":true,"type":"string"},"linked_records":{"items":{"$ref":"#/components/schemas/BrokerLinkedRecord"},"readOnly":true,"type":"array"},"page":{"readOnly":true,"type":"integer"},"submitting_brokers":{"items":{"$ref":"#/components/schemas/SubmittingBroker"},"nullable":true,"readOnly":true,"type":"array"}},"type":"object"},"BrokerLink":{"properties":{"classification":{"enum":["submission","decision","other"],"readOnly":true},"linked_deal_end_user_heron_id":{"description":"Heron ID of the deal linked to this broker end user.","nullable":true,"readOnly":true,"type":"string"},"linked_deal_name":{"description":"Display name of the deal linked to this broker end user.","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["unlinked","linked","dismissed","reclassified"],"readOnly":true}},"type":"object"},"BrokerLinkedRecord":{"additionalProperties":false,"properties":{"classification":{"enum":["submission","decision","other"],"readOnly":true},"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"link_type":{"enum":["absorbed_submission_duplicate","linked_decision"],"readOnly":true},"name":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"BrokerSubmissionFilesUploadSchema":{"properties":{"files":{"items":{},"maxItems":12,"minItems":1,"type":"array"}},"required":["files"],"type":"object"},"BrokerVelocitySignal":{"properties":{"high_threshold":{"type":"integer"},"low_threshold":{"type":"integer"},"medium_threshold":{"type":"integer"}},"type":"object"},"BulkExecuteQueriesRequestSchema":{"properties":{"end_user_heron_id":{"nullable":false,"type":"string"},"query_names":{"items":{"nullable":false,"type":"string"},"minItems":1,"nullable":false,"type":"array"}},"required":["end_user_heron_id","query_names"],"type":"object"},"BulkFunderExclusionRuleCreateSchema":{"additionalProperties":false,"properties":{"funder_heron_ids":{"items":{"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"sender_domains":{"items":{"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$","type":"string"},"type":"array"},"sender_emails":{"items":{"format":"email","type":"string"},"type":"array"},"sender_names":{"items":{"type":"string"},"type":"array"}},"required":["funder_heron_ids"],"type":"object"},"BulkFunderExclusionRuleResultSchema":{"properties":{"action":{"enum":["created","updated","unchanged","deleted"],"readOnly":true},"funder_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"BulkFunderExclusionRuleTargetSchema":{"additionalProperties":false,"properties":{"funder_heron_ids":{"items":{"type":"string"},"maxItems":200,"minItems":1,"type":"array"}},"required":["funder_heron_ids"],"type":"object"},"BulkFunderExclusionRuleUpdateSchema":{"additionalProperties":false,"properties":{"add":{"$ref":"#/components/schemas/FunderExclusionSenderIdentitySchema"},"funder_heron_ids":{"items":{"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"remove":{"$ref":"#/components/schemas/FunderExclusionSenderIdentitySchema"}},"required":["funder_heron_ids"],"type":"object"},"BulkSaveEntityAttributeValueItem":{"properties":{"attribute_name":{"description":"Name of the attribute to set the value for","type":"string"},"entity_name":{"description":"Name of the entity to target","type":"string"},"value":{"description":"The value to set for the attribute","nullable":true}},"required":["attribute_name","entity_name","value"],"type":"object"},"BulkSaveEntityAttributeValueResultSchema":{"properties":{"attribute_name":{"description":"Name of the attribute","type":"string"},"entity_name":{"description":"Name of the entity","type":"string"},"error":{"description":"Error message if the save failed","nullable":true,"type":"string"},"success":{"description":"Whether the value was saved successfully","type":"boolean"}},"required":["attribute_name","entity_name","success"],"type":"object"},"BulkSaveEntityAttributeValuesSchema":{"properties":{"values":{"description":"List of entity attribute values to save","items":{"$ref":"#/components/schemas/BulkSaveEntityAttributeValueItem"},"type":"array"}},"required":["values"],"type":"object"},"BulkSubmitFunderSubmissionResultSchema":{"additionalProperties":false,"properties":{"error":{"readOnly":true,"type":"string"},"outcome":{"enum":["submitted","failed","skipped"],"readOnly":true},"submission_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"BulkSubmitFunderSubmissionsRequestSchema":{"additionalProperties":false,"properties":{"selected_file_heron_ids":{"items":{"type":"string"},"nullable":true,"type":"array"},"submission_heron_ids":{"items":{"type":"string"},"maxItems":200,"minItems":1,"type":"array"},"use_sandbox":{"type":"boolean"}},"required":["submission_heron_ids","use_sandbox"],"type":"object"},"BulkUpdateBrokerFunderPoliciesSchema":{"additionalProperties":false,"properties":{"policies":{"items":{"$ref":"#/components/schemas/BrokerFunderPolicyUpdateItem"},"type":"array"}},"required":["policies"],"type":"object"},"BusinessContact":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"department":{"description":"Department of the business contact.","nullable":true,"type":"string"},"emails":{"description":"Business email addresses associated with the contact.","items":{"type":"string"},"type":"array"},"job_level":{"description":"Job level of the business contact.","nullable":true,"type":"string"},"linkedin_url":{"description":"LinkedIn profile URL for the contact.","nullable":true,"type":"string"},"name":{"description":"Name of the business contact.","nullable":true,"type":"string"},"organization":{"description":"Organisation associated with the contact.","nullable":true,"type":"string"},"organization_addresses":{"description":"Organisation addresses associated with the contact.","items":{"$ref":"#/components/schemas/BusinessContactAddress"},"type":"array"},"phones":{"description":"Business phone numbers associated with the contact.","items":{"$ref":"#/components/schemas/ProfilePhone"},"type":"array"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source":{"description":"Source that supplied the contact.","nullable":true,"type":"string"},"title":{"description":"Title of the business contact.","nullable":true,"type":"string"}},"type":"object"},"BusinessContactAddress":{"properties":{"city":{"description":"City of the contact's organisation address.","nullable":true,"type":"string"},"country":{"description":"Country of the contact's organisation address.","nullable":true,"type":"string"},"state":{"description":"State or province of the contact's organisation address.","nullable":true,"type":"string"},"street":{"description":"Street address of the contact's organisation.","nullable":true,"type":"string"},"zip_code":{"description":"Postal code of the contact's organisation address.","nullable":true,"type":"string"}},"type":"object"},"BusinessFirmographics":{"properties":{"accounting_firm":{"description":"Name of the business's accounting firm as recorded by the source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"address":{"description":"Business addresses by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"alternate_names":{"description":"Other names the business is recorded under, such as a trading name or a former name, by source. Empty when no source reported any.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"annual_report_date":{"description":"Dates the business last filed an annual report with the registry, in ISO 8601 format. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"associated_entities":{"description":"Names of other entities the registry links to this filing, one entry each. Empty when no source reported any.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"authorised_capital":{"description":"Capital the registry authorises the business to raise, in whole units of currency. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"bank":{"description":"Name of the business's bank as recorded by the source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"business_description":{"description":"How the source describes what the business does, in its own words. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"care_of":{"description":"Care-of line on the registry filing address. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"classification":{"description":"How the company registry classifies the entity. Source-verbatim, with no fixed vocabulary; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"corp_lifetime":{"description":"How long the registry records the entity as existing for, such as perpetual. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"duns":{"description":"D&B DUNS numbers by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"duration_date":{"description":"Date the registry records the entity as ceasing, where its life is fixed rather than perpetual. Source-verbatim; empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"effective_date":{"description":"Dates the registry filing took effect, by source. Often the same as the filing date; empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"email":{"description":"Email addresses recorded for the business, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"employees":{"description":"Employee counts by source. A source may supply earlier counts alongside its current one; the as_of date distinguishes them.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"employees_here":{"description":"Employees at this location only, by source, where the source reports it separately from the organisation-wide count. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"employment_growth":{"description":"Headcount growth as the source expressed it, usually a percentage. Source-verbatim; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"establishment_type":{"description":"How the source classifies the site, such as a single location, a headquarters, or a branch. Source-verbatim, with no fixed vocabulary; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"fein":{"description":"Federal Employer Identification Numbers recorded for the business, by source. A business may have more than one on file. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_county":{"description":"County the original registry filing was made in. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_date":{"description":"Dates the business's formation document was filed with the company registry, by source. A record may carry a filing date without an incorporation date, or the reverse; empty when neither is reported.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"filing_history":{"description":"Amendments and other events the registry recorded against the filing, one entry each, in source order. An entry's as_of is the date of that amendment where the source gives one. Empty when no source reported any.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_office":{"description":"Names of the registry offices holding the filing, by source. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_office_address":{"description":"Addresses of the registry offices holding the filing, by source. This is the office's own address, not the business's. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_state":{"description":"States the registry filing was made in, by source. This is where the document was filed, which is not always the state of incorporation. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"filing_type":{"description":"Kind of document filed with the registry. Source-verbatim; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"fiscal_year_end":{"description":"When the business's financial year ends, as the source expressed it. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"franchise_status":{"description":"Status of the business's franchise tax with the registry. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"headquarters":{"description":"Name of the business's headquarters where the source records it as a branch. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"incorporation_date":{"description":"Dates the business was incorporated, by source. Empty when no source reported one, which happens where a registry record carries only the date its formation document was filed.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"industry_group":{"description":"Industry groups by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"invested_amount":{"description":"Amount recorded as invested in the business, in whole units of currency. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"last_annual_financial_date":{"description":"Date of the most recent annual financial figures the source holds, in ISO 8601 format. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"legal_immediate_parent":{"description":"Legal immediate parent names by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"legal_immediate_parent_indicator":{"description":"Legal immediate parent indicators by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"legal_name":{"description":"Legal business names by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"legal_status":{"description":"Business legal statuses by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"legal_ultimate_parent":{"description":"Legal ultimate parent names by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"legal_ultimate_parent_indicator":{"description":"Legal ultimate parent indicators by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"line_of_business":{"description":"Lines of business by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"llc_type":{"description":"Sub-type the registry records for a limited liability company. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"mailing_address":{"description":"Mailing addresses where these differ from the trading address, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"msa":{"description":"Metropolitan statistical areas by source.","items":{"$ref":"#/components/schemas/SourcedMSAValue"},"type":"array"},"naics":{"description":"Ranked NAICS codes by source.","items":{"$ref":"#/components/schemas/SourcedIndustryCodeValue"},"type":"array"},"net_worth":{"description":"Net worth in whole units of currency, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"number_of_accounts":{"description":"Count of accounts the source holds for the business. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"occupancy_type":{"description":"Whether the source records the premises as owned, rented or otherwise held. Source-verbatim; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"operating_status":{"description":"Business operating statuses by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"outstanding_shares":{"description":"Shares currently in issue, as the source expressed it. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"ownership":{"description":"Business ownership details by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"people":{"description":"Business contacts and officers by source.","items":{"$ref":"#/components/schemas/SourcedPersonValue"},"type":"array"},"phone":{"description":"Business phone numbers by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"profit":{"description":"Profit in whole units of currency, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"registered_agent":{"description":"Registered agents by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"registered_agent_address":{"description":"Addresses recorded for the registered agent, by source. This is the agent's address, not the business's. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"registry_number":{"description":"Identifiers the company registry assigned to the business, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"revenue":{"description":"Annual revenue amounts by source. A source may supply earlier figures alongside its current one; the as_of date distinguishes them.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"sales_growth":{"description":"Sales growth as the source expressed it, usually a percentage. Source-verbatim; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"sales_territory":{"description":"Geographic area the source records the business as selling into. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"shareholders":{"description":"Shareholder count as the source expressed it. Source-verbatim; empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"sic":{"description":"Ranked SIC codes by source.","items":{"$ref":"#/components/schemas/SourcedIndustryCodeValue"},"type":"array"},"square_footage":{"description":"Floor area of the building in square feet, by source. Empty when no source reported it.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"},"state_of_incorporation":{"description":"Incorporation states by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"status_date":{"description":"Dates the registry last changed the business's status, by source. Empty when no source reported one.","items":{"$ref":"#/components/schemas/SourcedDateValue"},"type":"array"},"ticker_symbol":{"description":"Stock ticker symbols recorded for the business, by source. Empty for a business that is not publicly traded.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"web_address":{"description":"Business websites by source.","items":{"$ref":"#/components/schemas/SourcedStringValue"},"type":"array"},"year_started":{"description":"Business start years by source.","items":{"$ref":"#/components/schemas/SourcedIntegerValue"},"type":"array"}},"required":["accounting_firm","address","alternate_names","annual_report_date","associated_entities","authorised_capital","bank","business_description","care_of","classification","corp_lifetime","duns","duration_date","effective_date","email","employees","employees_here","employment_growth","establishment_type","fein","filing_county","filing_date","filing_history","filing_office","filing_office_address","filing_state","filing_type","fiscal_year_end","franchise_status","headquarters","incorporation_date","industry_group","invested_amount","last_annual_financial_date","legal_immediate_parent","legal_immediate_parent_indicator","legal_name","legal_status","legal_ultimate_parent","legal_ultimate_parent_indicator","line_of_business","llc_type","mailing_address","msa","naics","net_worth","number_of_accounts","occupancy_type","operating_status","outstanding_shares","ownership","people","phone","profit","registered_agent","registered_agent_address","registry_number","revenue","sales_growth","sales_territory","shareholders","sic","square_footage","state_of_incorporation","status_date","ticker_symbol","web_address","year_started"],"type":"object"},"BusinessProfileRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"alternate_business_names":{"description":"Other business names on the record.","items":{"type":"string"},"type":"array"},"business_description":{"description":"Description of the business's activity.","nullable":true,"type":"string"},"business_name":{"description":"Business name on the record.","nullable":true,"type":"string"},"business_type":{"description":"Source-provided business type.","nullable":true,"type":"string"},"company_contact":{"description":"Company contact named by the source.","nullable":true,"type":"string"},"contact_title":{"description":"Title of the company contact.","nullable":true,"type":"string"},"corporate_status":{"description":"Source-provided corporate status.","nullable":true,"type":"string"},"current_outstanding_shares":{"description":"Current outstanding share count.","nullable":true,"type":"string"},"fiscal_year_end":{"description":"Fiscal year end from the source.","nullable":true,"type":"string"},"incorporation_date":{"description":"Date the business was incorporated.","format":"date","nullable":true,"type":"string"},"last_annual_financial_date":{"description":"Date of the latest annual financial information.","format":"date","nullable":true,"type":"string"},"legal_business_name":{"description":"Legal business name on the record.","nullable":true,"type":"string"},"location_type":{"description":"Source-provided business location type.","nullable":true,"type":"string"},"non_profit":{"description":"Whether the business is a nonprofit.","nullable":true,"type":"boolean"},"number_of_employees":{"description":"Source-provided employee count.","nullable":true,"type":"string"},"operating_status":{"description":"Source-provided operating status.","nullable":true,"type":"string"},"parent_company":{"description":"Immediate or ultimate parent company.","nullable":true,"type":"string"},"primary_naics_code":{"description":"Primary NAICS industry code.","nullable":true,"type":"string"},"primary_naics_desc":{"description":"Description of the primary NAICS industry code.","nullable":true,"type":"string"},"primary_sic_code":{"description":"Primary SIC industry code.","nullable":true,"type":"string"},"primary_sic_desc":{"description":"Description of the primary SIC industry code.","nullable":true,"type":"string"},"public_company":{"description":"Whether the business is publicly traded.","nullable":true,"type":"boolean"},"registered_agent":{"description":"Registered agent named by the source.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"secondary_naics_codes":{"description":"Secondary NAICS industry codes.","items":{"type":"string"},"type":"array"},"secondary_sic_codes":{"description":"Secondary SIC industry codes.","items":{"type":"string"},"type":"array"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"shareholders":{"description":"Shareholder information from the source.","nullable":true,"type":"string"},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"},"state_of_incorporation":{"description":"State where the business was incorporated.","nullable":true,"type":"string"},"stock_exchange":{"description":"Stock exchange for a public company.","nullable":true,"type":"string"},"stock_ticker":{"description":"Stock ticker for a public company.","nullable":true,"type":"string"},"website":{"description":"Business website.","nullable":true,"type":"string"},"year_established":{"description":"Year the business was established.","nullable":true,"type":"string"},"year_started":{"description":"Year the business started operating.","nullable":true,"type":"string"}},"type":"object"},"BusinessVerification":{"properties":{"billing_address":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Where the business is billed."},"business_address":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Where the business operates from."},"business_email":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's email address."},"business_phone":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's phone number."},"dba":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"DBA or trade name."},"display_name":{"description":"The name a reader shows the subject under.","nullable":true,"type":"string"},"ein":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"US EIN."},"entity_type":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Legal form, such as LLC."},"facebook":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's Facebook page."},"instagram":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's Instagram profile."},"key":{"description":"The details response key for this subject's row, so a reader can open it.","type":"string"},"legal_name":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Legal business name."},"linkedin":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's LinkedIn page."},"standing":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Whether the company's filings are in good standing."},"started_on":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Business start date."},"state_of_incorporation":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"State the company was formed in."},"subject_type":{"enum":["owner","business"]},"website":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The business's website."}},"type":"object"},"CTA":{"properties":{"text":{"example":"CTA Text","type":"string"},"url":{"example":"https://example.com/cta","type":"string"}},"required":["text","url"],"type":"object"},"CachePolicyDefinition":{"properties":{"enabled":{"type":"boolean"},"scope":{"type":"string"},"ttl_seconds":{"type":"integer"}},"required":["enabled","scope","ttl_seconds"],"type":"object"},"CandidateAnchorTrace":{"properties":{"anchor":{"description":"Identifier that resolved the match outright: ein or corp_number_echo.","enum":["ein","corp_number_echo"],"type":"string"},"guard_field":{"description":"Candidate field used to guard the anchor match; null when no guard was needed.","enum":["business_name","address","owner",null],"nullable":true,"type":"string"},"guard_strength":{"description":"Guard field's comparison strength; null when no guard was evaluated.","nullable":true,"type":"number"},"permitted":{"description":"False records an anchor-grade identifier the guard denied.","type":"boolean"}},"required":["anchor","permitted"],"type":"object"},"CandidateCapTrace":{"properties":{"cap":{"description":"The cap the total was clamped to, as a fraction.","type":"number"},"conflict":{"description":"Conflicting field that caused the score cap.","enum":["zero_floor"],"type":"string"},"uncapped_total":{"description":"The uncapped total, as a fraction.","type":"number"}},"required":["cap","conflict","uncapped_total"],"type":"object"},"CandidateFieldTrace":{"properties":{"base":{"description":"Comparator strength before named modifiers are applied.","type":"number"},"components":{"description":"Per-part evidence used to derive the strength.","items":{"$ref":"#/components/schemas/CandidateTraceComponent"},"type":"array"},"mode":{"description":"How the strength was derived: exact, similarity, stepped, or composite.","enum":["exact","similarity","stepped","composite"],"type":"string"},"modifiers":{"description":"Named adjustments applied to the base strength.","items":{"$ref":"#/components/schemas/CandidateTraceModifier"},"type":"array"}},"required":["base","components","mode","modifiers"],"type":"object"},"CandidateScore":{"properties":{"anchor_trace":{"allOf":[{"$ref":"#/components/schemas/CandidateAnchorTrace"}],"description":"Winner-only; null otherwise.","nullable":true},"anchored_by":{"description":"The anchor identifier that resolved the match (e.g. ein); winner-only.","nullable":true,"type":"string"},"cap_trace":{"allOf":[{"$ref":"#/components/schemas/CandidateCapTrace"}],"description":"Audit of the score cap; null when no cap was applied.","nullable":true},"capped_by":{"description":"Names the clamp when the total isn't the contribution sum (e.g. zero_floor); null otherwise.","nullable":true,"type":"string"},"contributions":{"description":"Per-field ledger of contributions to the candidate's match score.","items":{"$ref":"#/components/schemas/CandidateScoreContribution"},"type":"array"},"tier":{"description":"Score tier: high, medium, or low.","enum":["high","medium","low"],"type":"string"},"total":{"description":"The match score as a fraction in [0, 1].","type":"number"},"version":{"description":"Match-scoring model version.","type":"string"}},"required":["contributions","tier","total","version"],"type":"object"},"CandidateScoreContribution":{"properties":{"allocation":{"description":"Fraction of the 100-point maximum.","type":"number"},"application_value":{"description":"The compared application value when it differs from the hoisted application block; null otherwise.","nullable":true,"type":"string"},"candidate_value":{"description":"Candidate value compared for this contribution; null when absent.","nullable":true,"type":"string"},"cause":{"description":"Why an absent verdict has no evidence; null on scoreable rows.","enum":["missing_application_value","missing_candidate_value",null],"nullable":true,"type":"string"},"field":{"description":"Application field evaluated by this contribution.","type":"string"},"identifier_source":{"description":"For an identifier-echo corroboration (corp_number_echo), which system supplied the re-searched number; null on other rows.","enum":["sos_registry","clear_filing",null],"nullable":true,"type":"string"},"kind":{"description":"Contribution type: field (a direct comparison), corroboration, penalty, or quality.","enum":["field","corroboration","quality","penalty"],"type":"string"},"points":{"description":"This row's contribution to the total, as a fraction.","type":"number"},"strength":{"description":"Comparator strength in [-1, 1]; null when the field wasn't comparable (fall back to the verdict).","nullable":true,"type":"number"},"trace":{"allOf":[{"$ref":"#/components/schemas/CandidateFieldTrace"}],"description":"How the strength was derived; null when trivially derived.","nullable":true},"verdict":{"description":"Comparison verdict: agree, fuzzy, diverge, or absent.","enum":["agree","fuzzy","diverge","absent"],"type":"string"}},"required":["allocation","field","kind","points","verdict"],"type":"object"},"CandidateTraceComponent":{"properties":{"part":{"description":"Compared part of a compound field, such as street, city, zip, or name similarity.","enum":["name_similarity","full_name_similarity","house","street","city","state","zip","zip5","zip4"],"type":"string"},"value":{"description":"Bool for exact part matches, a 0-1 float for fuzzy ones; null when uncompared.","nullable":true}},"required":["part"],"type":"object"},"CandidateTraceModifier":{"properties":{"detail":{"description":"Free-text specifics; display verbatim.","nullable":true,"type":"string"},"effect":{"description":"The strength delta this adjustment contributed.","type":"number"},"kind":{"description":"Adjustment applied: aka_lift, dba_basis, or premises_composite.","enum":["aka_lift","corroboration_admitted","dba_basis","merged_filing_basis","middle_initial_cap","partial_agreement_floor","premises_composite"],"type":"string"}},"required":["effect","kind"],"type":"object"},"CategorisationBeta":{"properties":{"merchants_beta":{"type":"boolean"},"positions_beta":{"type":"boolean"},"rich_heuristics_beta":{"type":"boolean"}},"type":"object"},"Category":{"properties":{"analytics_group":{"description":"The analytics group of the category","enum":["revenue","cost_of_goods_sold","operational_expenses","tax_expenses","intra_company","debt","equity","other_income","special_items","other",null],"example":"revenue","nullable":true,"readOnly":true,"type":"string"},"created":{"description":"Timestamp for when the category was created","example":"2026-10-06T22:12:42.805146+00:00","format":"date-time","readOnly":true,"type":"string"},"description":{"description":"Description of the category","example":"Rent for offices, workspaces or storage facilities","type":"string"},"heron_id":{"description":"Unique ID of the category generated by Heron Data","example":"ctg_TNYxXVm778DcBn4iQKZDV7","readOnly":true,"type":"string"},"label":{"description":"The label of the category","example":"Rent","type":"string"}},"required":["label"],"type":"object"},"Category1":{"properties":{"heron_id":{"description":"Unique ID of the category generated by Heron Data","example":"ctg_TNYxXVm778DcBn4iQKZDV7","readOnly":true,"type":"string"},"label":{"description":"The label of the category","example":"Rent","type":"string"}},"required":["label"],"type":"object"},"CategoryFeedback":{"properties":{"heron_id":{"description":"heron_id of the correct category","example":"ctg_gvPxiHtbTS2vUUpovYn3Sc","type":"string"},"label":{"description":"label of the correct category","example":"Insurance","type":"string"}},"type":"object"},"Check":{"properties":{"attribute_description":{"description":"What the attribute measures. Present only for accounts on policy versions","nullable":true,"type":"string"},"attribute_display_name":{"description":"The attribute's human-readable name. Present only for accounts on policy versions","nullable":true,"type":"string"},"attribute_label":{"nullable":true,"type":"string"},"attribute_unit":{"description":"The unit of `attribute_label`, for formatting the attribute's value and the check's threshold. Null for a check without an attribute or an attribute with no declared unit","enum":["currency","percentage","count","ratio","days","text",null],"nullable":true},"attribute_value_set":{"description":"The vocabulary `attribute_label` draws from, so the editor can offer a dropdown. Keys into the /policy_value_sets response. Null for free text","enum":["us_state","naics_industry","restricted_industries",null],"nullable":true},"boolean_check":{"allOf":[{"$ref":"#/components/schemas/BooleanCheck"}],"nullable":true},"composite_check":{"allOf":[{"$ref":"#/components/schemas/CompositeCheck"}],"nullable":true},"date_check":{"allOf":[{"$ref":"#/components/schemas/DateCheck"}],"nullable":true},"date_delta_to_now_check":{"allOf":[{"$ref":"#/components/schemas/DateDeltaToNowCheck"}],"nullable":true},"enhanced_sql_check":{"allOf":[{"$ref":"#/components/schemas/EnhancedSQLCheck"}],"nullable":true},"group":{"nullable":true,"type":"string"},"identity":{"description":"Stable kind:key identity used to match stored check evaluations","nullable":true,"readOnly":true,"type":"string"},"name":{"nullable":true,"type":"string"},"numeric_check":{"allOf":[{"$ref":"#/components/schemas/NumericCheck"}],"nullable":true},"parameters":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"sql_check":{"allOf":[{"$ref":"#/components/schemas/SQLCheck"}],"nullable":true},"string_check":{"allOf":[{"$ref":"#/components/schemas/StringCheck"}],"nullable":true}},"type":"object"},"CheckAnalyticsResponse":{"properties":{"check_name":{"type":"string"},"total_failed":{"type":"integer"},"total_missing_data":{"type":"integer"},"total_passed":{"type":"integer"}},"type":"object"},"CheckEvaluation":{"properties":{"attribute_value":{"allOf":[{"$ref":"#/components/schemas/CompanyAttributeValue"}],"nullable":true},"check":{"allOf":[{"$ref":"#/components/schemas/Check"}],"nullable":true},"effective_result":{"description":"The check's result after failure routing: `review_required` for a tripped check whose on_failure is review_required (and not auto_decline), else the same as `result`","enum":["pass","failed","review_required","missing_data"],"readOnly":true},"evaluations":{"items":{"$ref":"#/components/schemas/CheckEvaluation"},"nullable":true,"type":"array"},"reason":{"description":"Only populated for customers on policy versions, and only for company-attribute checks","nullable":true,"readOnly":true,"type":"string"},"result":{"enum":["pass","failed","review_required","missing_data"]}},"type":"object"},"CheckFlip":{"properties":{"baseline_result":{"description":"Baseline result: passed, failed, review_required, or missing_data","readOnly":true,"type":"string"},"baseline_value":{"nullable":true,"readOnly":true,"type":"string"},"candidate_result":{"description":"Candidate result: passed, failed, review_required, or missing_data","readOnly":true,"type":"string"},"candidate_value":{"nullable":true,"readOnly":true,"type":"string"},"check_identity":{"description":"Prefixed identity: attribute:, sql:, sql_legacy:, or composite:","readOnly":true,"type":"string"},"check_name":{"nullable":true,"readOnly":true,"type":"string"},"section_name":{"readOnly":true,"type":"string"}},"type":"object"},"ChosenCreditScore":{"properties":{"bureau":{"description":"The bureau that produced the score; `unknown` when the source did not identify one.","enum":["equifax","experian","transunion","unknown"]},"score":{"description":"The numeric score the source reported.","type":"integer"},"score_model":{"description":"The scoring model family; `unknown` when the source did not name one.","enum":["fico","vantagescore","unknown"]},"score_model_raw":{"description":"The scoring model as the source named it; null when the source did not identify one.","nullable":true,"type":"string"},"score_version_raw":{"description":"The scoring model version as the source stated it, such as `8`; null when it gave none.","nullable":true,"type":"string"},"scored_on":{"description":"The date the score was calculated, in ISO 8601 format; null when the source did not report one.","format":"date","nullable":true,"type":"string"}},"type":"object"},"ClearReportRequestSchema":{"additionalProperties":false,"properties":{"entity_id":{"minLength":1,"type":"string"},"group_id":{"minLength":1,"type":"string"},"name":{"type":"string"},"subject_type":{"enum":["business","person"],"type":"string"}},"required":["entity_id","group_id","name","subject_type"],"type":"object"},"ClearRiskInformLookupSchema":{"additionalProperties":false,"properties":{"definition_name":{"description":"The Risk Inform definition the result was scored against","minLength":1,"type":"string"},"definition_version":{"description":"The definition version the result was scored against, if one was pinned. A result scored without a pinned version is stored under a different path.","minLength":1,"type":"string"},"end_user_heron_id":{"description":"The end user the result is stored under","type":"string"},"entity_id":{"description":"The resolved CLEAR entity that was scored","minLength":1,"type":"string"},"subject_type":{"description":"Which CLEAR subject the entity id names","enum":["business","person"],"type":"string"}},"required":["definition_name","end_user_heron_id","entity_id","subject_type"],"type":"object"},"ClearRiskInformRequestSchema":{"additionalProperties":false,"properties":{"definition_name":{"minLength":1,"type":"string"},"definition_version":{"minLength":1,"type":"string"},"end_user_heron_id":{"description":"The end user the result is stored under","type":"string"},"entity_id":{"minLength":1,"type":"string"},"subject_type":{"enum":["business","person"],"type":"string"}},"required":["definition_name","end_user_heron_id","entity_id","subject_type"],"type":"object"},"ClearRiskInformResultSchema":{"additionalProperties":false,"properties":{"definition_name":{"description":"The Risk Inform definition the result was scored against","minLength":1,"type":"string"},"definition_version":{"description":"The definition version the result was scored against, if one was pinned. A result scored without a pinned version is stored under a different path.","minLength":1,"type":"string"},"end_user_heron_id":{"description":"The end user the result is stored under","type":"string"},"entity_id":{"description":"The resolved CLEAR entity that was scored","minLength":1,"type":"string"},"include":{"description":"Pass `document` to add the stored response rendered whole as JSON","enum":["document"],"type":"string"},"subject_type":{"description":"Which CLEAR subject the entity id names","enum":["business","person"],"type":"string"}},"required":["definition_name","end_user_heron_id","entity_id","subject_type"],"type":"object"},"ClearSearchCriteria":{"additionalProperties":false,"properties":{"business_name":{"type":"string"},"city":{"minLength":1,"type":"string"},"corporation_id":{"minLength":1,"type":"string"},"dob":{"type":"string"},"first_name":{"type":"string"},"fuzzy":{"type":"boolean"},"last_name":{"type":"string"},"middle_initial":{"type":"string"},"phone":{"minLength":1,"type":"string"},"secondary_last_name":{"type":"string"},"state":{"minLength":1,"type":"string"},"street":{"minLength":1,"type":"string"},"zip_code":{"minLength":1,"type":"string"}},"type":"object"},"ClearSearchRequestSchema":{"additionalProperties":false,"properties":{"criteria":{"$ref":"#/components/schemas/ClearSearchCriteria"},"subject_type":{"enum":["business","person"],"type":"string"}},"required":["criteria","subject_type"],"type":"object"},"CloneEndUserEntityAttributeSchema":{"properties":{"attribute_name":{"type":"string"}},"required":["attribute_name"],"type":"object"},"CollectingAccount":{"properties":{"account_owner_name":{"description":"Name the bank statement lists as the owner of the account the money was collected from","example":"ACME TRADING LLC","nullable":true,"type":"string"},"display_account_id":{"description":"Human-readable label for the bank account the money was collected from: the last four digits of the account number (falling back to the account title). Not unique and not a key.","example":"7505","nullable":true,"type":"string"}},"type":"object"},"CompanyAliasWrite":{"additionalProperties":false,"description":"Any name but the legal one, which is `name`.","properties":{"effective_from":{"description":"Date the name started, when a source states one.","format":"date","nullable":true,"type":"string"},"effective_to":{"description":"Date the name ended, when a source states one.","format":"date","nullable":true,"type":"string"},"raw":{"description":"The name exactly as the source wrote it, including its legal form.","type":"string"},"type":{"description":"What type of name it is: `legal` is the name a source answers with, `former` a name a registry held before the current one, `dba` a name the company trades under, and `trade` a name a report lists as an alternate.","enum":["legal","dba","former","trade"]}},"type":"object"},"CompanyAttributeCatalogueSchema":{"properties":{"check_options":{"description":"Allowed check forms and any conditional inputs for this value type.","readOnly":true},"description":{"description":"What the value means, written for the customer reading their own rules - the status words a position count admits, what a window is anchored to, when the value is missing rather than zero. Null for a label with no curated description yet. Present only for accounts on policy versions","nullable":true,"readOnly":true,"type":"string"},"display_name":{"description":"The attribute's human-readable name, with its tier as a qualifier, e.g. \"NSF days last 30 days\", \"Open judgment total amount (12 months, background check, owner 1)\". Parameters are not part of the name - render them from `parameters` where the context wants them. Derived, so it may be reworded. Present only for accounts on policy versions","readOnly":true,"type":"string"},"label":{"description":"The attribute's stable identifier, which a check refers to and a CRM field maps onto. Namespaced with \":\" where a source groups its attributes, e.g. \"nsf_days_last_30_days\", \"BackgroundCheck:owner_1:open_total_amount_judgment_12mo\"","type":"string"},"parameter_definitions":{"description":"Presentation metadata for every parameter axis, including its name, description, default value and an option-to-label map. Null for an unparametrised label","readOnly":true},"parameters":{"additionalProperties":{"type":"string"},"description":"Which variant of a parametrised label this is, e.g. {\"product_type\": \"mca\", \"status\": \"active_only\"}. Null for a label that takes no parameters, and null on a catalogue listing, where parameter definitions give the choices instead","nullable":true,"type":"object"},"topic_path":{"description":"The picker hierarchy from broad topic to narrow topic.","items":{"type":"string"},"readOnly":true,"type":"array"},"type":{"description":"The value's type, which decides what a check on it can compare: \"int\", \"float\", \"decimal\", \"string\", \"date\", \"datetime\", \"bool\"","enum":["float","int","decimal","string","date","datetime","bool"]},"unit":{"description":"How to format the value, which `type` alone cannot say: \"currency\" (in the deal's currency), \"percentage\" (already in percent points), \"count\", \"ratio\" (a 0-1 quotient), \"days\", \"text\". Null for an attribute with no declared unit - print the raw value","enum":["currency","percentage","count","ratio","days","text",null],"nullable":true},"value_set":{"description":"The finite vocabulary the value is drawn from, so the editor can offer a dropdown instead of free text. Keys into the /policy_value_sets response. Null for free text","enum":["us_state","naics_industry","restricted_industries",null],"nullable":true}},"type":"object"},"CompanyAttributeSchema":{"properties":{"description":{"description":"What the value means, written for the customer reading their own rules - the status words a position count admits, what a window is anchored to, when the value is missing rather than zero. Null for a label with no curated description yet. Present only for accounts on policy versions","nullable":true,"readOnly":true,"type":"string"},"display_name":{"description":"The attribute's human-readable name, with its tier as a qualifier, e.g. \"NSF days last 30 days\", \"Open judgment total amount (12 months, background check, owner 1)\". Parameters are not part of the name - render them from `parameters` where the context wants them. Derived, so it may be reworded. Present only for accounts on policy versions","readOnly":true,"type":"string"},"label":{"description":"The attribute's stable identifier, which a check refers to and a CRM field maps onto. Namespaced with \":\" where a source groups its attributes, e.g. \"nsf_days_last_30_days\", \"BackgroundCheck:owner_1:open_total_amount_judgment_12mo\"","type":"string"},"parameter_options":{"description":"Every value each of the label's parameters accepts, e.g. {\"product_type\": [\"mca\", \"line_of_credit\", \"all\"], \"status\": [\"active_only\", \"open\", \"all\"]}. Null for an unparametrised label. Missing keys use their declared defaults","readOnly":true},"parameters":{"additionalProperties":{"type":"string"},"description":"Which variant of a parametrised label this is, e.g. {\"product_type\": \"mca\", \"status\": \"active_only\"}. Null for a label that takes no parameters, and null on a catalogue listing, where parameter definitions give the choices instead","nullable":true,"type":"object"},"type":{"description":"The value's type, which decides what a check on it can compare: \"int\", \"float\", \"decimal\", \"string\", \"date\", \"datetime\", \"bool\"","enum":["float","int","decimal","string","date","datetime","bool"]},"unit":{"description":"How to format the value, which `type` alone cannot say: \"currency\" (in the deal's currency), \"percentage\" (already in percent points), \"count\", \"ratio\" (a 0-1 quotient), \"days\", \"text\". Null for an attribute with no declared unit - print the raw value","enum":["currency","percentage","count","ratio","days","text",null],"nullable":true},"value_set":{"description":"The finite vocabulary the value is drawn from, so the editor can offer a dropdown instead of free text. Keys into the /policy_value_sets response. Null for free text","enum":["us_state","naics_industry","restricted_industries",null],"nullable":true}},"type":"object"},"CompanyAttributeValue":{"properties":{"evidence":{"allOf":[{"$ref":"#/components/schemas/AttributeEvidence"}],"description":"Where the value came from, so a reviewer can see what produced it - the source records for a background-check finding, the positions behind a holdback. Null for attributes that cite nothing","nullable":true},"value":{"description":"The value, stringified whatever the attribute's type: \"3\", \"12500.00\", \"true\", \"1999-01-01\". Null when the deal has no data for this attribute","type":"string"}},"type":"object"},"CompanyAttributeValueSchema":{"properties":{"attribute":{"$ref":"#/components/schemas/CompanyAttributeSchema"},"availability":{"enum":["available","partially_available","not_available"]},"value":{}},"type":"object"},"CompanyId":{"properties":{"country":{"description":"The country that issues this type of identifier, as a two-letter code. Null when the identifier belongs to no one country: a DUNS number is issued worldwide by one agency, so it says nothing about where the company is.","nullable":true,"type":"string"},"type":{"description":"Which identifier it is: `us_ein`, `duns`, `uk_company_number` or `vat`.","enum":["us_ein","us_taxpayer_number","duns","uk_company_number","vat"]},"value":{"description":"The identifier as the source states it.","type":"string"},"verified":{"description":"What an authority said when asked about this identifier under this business's name: `matched` or `not_matched`. Null when no check was run for it, and always null on the identifier inside a `tax_id_verifications` row, which is the check itself.","enum":["matched","not_matched",null],"nullable":true}},"type":"object"},"CompanyIdWrite":{"additionalProperties":false,"properties":{"country":{"description":"The country that issues this type of identifier, as a two-letter code. Null when the identifier belongs to no one country: a DUNS number is issued worldwide by one agency, so it says nothing about where the company is.","nullable":true,"type":"string"},"type":{"description":"Which identifier it is: `us_ein`, `duns`, `uk_company_number` or `vat`.","enum":["us_ein","us_taxpayer_number","duns","uk_company_number","vat"]},"value":{"description":"The identifier as the source states it.","type":"string"}},"type":"object"},"CompanyName":{"properties":{"effective_from":{"description":"Date the name started, when a source states one.","format":"date","nullable":true,"type":"string"},"effective_to":{"description":"Date the name ended, when a source states one.","format":"date","nullable":true,"type":"string"},"raw":{"description":"The name exactly as the source wrote it, including its legal form.","type":"string"},"type":{"description":"What type of name it is: `legal` is the name a source answers with, `former` a name a registry held before the current one, `dba` a name the company trades under, and `trade` a name a report lists as an alternate.","enum":["legal","dba","former","trade"]}},"type":"object"},"CompanyOverviewLayoutSchema":{"properties":{"group_name":{"type":"string"},"id":{"description":"A unique id used to reference the group","type":"string"},"widgets":{"items":{"$ref":"#/components/schemas/Widget"},"type":"array"}},"required":["group_name","id","widgets"],"type":"object"},"Components":{"properties":{"city_name":{"nullable":true,"type":"string"},"default_city_name":{"nullable":true,"type":"string"},"delivery_point":{"nullable":true,"type":"string"},"delivery_point_check_digit":{"nullable":true,"type":"string"},"plus4_code":{"nullable":true,"type":"string"},"primary_number":{"nullable":true,"type":"string"},"state_abbreviation":{"nullable":true,"type":"string"},"street_name":{"nullable":true,"type":"string"},"street_suffix":{"nullable":true,"type":"string"},"zipcode":{"nullable":true,"type":"string"}},"type":"object"},"CompositeCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"checks":{"items":{"$ref":"#/components/schemas/Check"},"type":"array"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"type":{"enum":["AND","OR"]}},"type":"object"},"ConditionEvaluation":{"properties":{"attribute_value":{"allOf":[{"$ref":"#/components/schemas/CompanyAttributeValue"}],"nullable":true,"readOnly":true},"check":{"allOf":[{"$ref":"#/components/schemas/Check"}],"readOnly":true},"matched":{"description":"Whether the condition passed and chose its branch. One that did not is not a failed check","readOnly":true}},"type":"object"},"CorporateFilingHistoryEntrySchema":{"properties":{"history_code":{"description":"Code assigned to the filing event by the source.","nullable":true,"type":"string"},"history_desc":{"description":"Source-provided description of the filing event.","nullable":true,"type":"string"}},"type":"object"},"CorporateRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"annual_report_file_date":{"description":"Date the filing office received the annual report; null when unavailable.","format":"date","nullable":true,"type":"string"},"associated_business_count":{"description":"Number of associated businesses in the source business group.","type":"integer"},"business_duns":{"description":"DUNS number assigned to the filed business; null when unavailable.","nullable":true,"type":"string"},"business_group":{"description":"Source grouping identifier for associated businesses.","nullable":true,"type":"string"},"business_name":{"description":"The registered business name.","nullable":true,"type":"string"},"business_type":{"description":"Source-provided business type on the filing; the first value when the source reports several.","nullable":true,"type":"string"},"corp_lifetime":{"description":"The term the registration was filed for, e.g. PERPETUAL; null when unavailable.","nullable":true,"type":"string"},"corp_status":{"description":"Filing status classification: active, inactive, dissolved, failed, or unknown. Failed covers forfeited, revoked, suspended, and administratively dissolved filings.","enum":["active","dissolved","inactive","failed","unknown"]},"corporation_number":{"description":"Corporation number the filing office assigned to the entity; null when the source does not report one.","nullable":true,"type":"string"},"corporation_type":{"description":"Source-provided corporation classification, separate from the filing's business type; null when unavailable.","nullable":true,"type":"string"},"duration":{"description":"Source-provided duration date or term; null when unavailable.","nullable":true,"type":"string"},"federal_emp_id":{"description":"Federal employer identification number listed on the filing.","nullable":true,"type":"string"},"filing_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_history":{"description":"Ordered filing events recorded for this corporate record.","items":{"$ref":"#/components/schemas/CorporateFilingHistoryEntrySchema"},"type":"array"},"filing_office_duns":{"description":"Source-provided filing DUNS number; null when unavailable.","nullable":true,"type":"string"},"filing_office_name":{"description":"Office where the filing was recorded.","nullable":true,"type":"string"},"filing_state":{"description":"State where the filing was recorded.","nullable":true,"type":"string"},"filing_state_name":{"description":"Full name of the filing state.","nullable":true,"type":"string"},"former_names":{"description":"Former business names listed on the filing.","items":{"type":"string"},"type":"array"},"franchise_status":{"description":"Franchise-tax standing the filing office reports, e.g. CURRENT; null when unavailable.","nullable":true,"type":"string"},"has_officers":{"description":"True when the filing lists officers.","type":"boolean"},"incorporation_date":{"description":"Date the entity was incorporated.","format":"date","nullable":true,"type":"string"},"is_failed":{"description":"True when the corporate filing status is failed.","type":"boolean"},"llc_type":{"description":"How the registry classifies the LLC, e.g. MEMBER MANAGED; null when unavailable.","nullable":true,"type":"string"},"notes":{"description":"Source-provided note about the filing; null when unavailable.","nullable":true,"type":"string"},"officer_count":{"description":"Number of officers listed on the filing.","type":"integer"},"officer_names":{"description":"Names of officers listed on the filing.","items":{"type":"string"},"type":"array"},"owner_is_officer":{"description":"True when the application's named owner appears among the filing's officers.","type":"boolean"},"ownership_changed":{"description":"True when officers changed across the entity's filings.","type":"boolean"},"registered_agent":{"description":"Registered agent listed on the filing.","nullable":true,"type":"string"},"registered_agent_address":{"description":"Address of the registered agent listed on the filing.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"},"state_filing_number":{"description":"Filing number recorded on the filing; null when the source does not report one.","nullable":true,"type":"string"},"state_of_incorporation":{"description":"State where the entity was incorporated.","nullable":true,"type":"string"},"status":{"description":"Source-provided corporate filing status.","nullable":true,"type":"string"},"status_date":{"description":"Date the source recorded the corporate status; null when unavailable.","format":"date","nullable":true,"type":"string"},"status_effective_date":{"description":"Date the filing became effective; null when unavailable.","format":"date","nullable":true,"type":"string"}},"type":"object"},"CourtOwner":{"additionalProperties":false,"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"middle_name":{"type":"string"}},"required":["first_name","last_name"],"type":"object"},"CourtSearchRequestSchema":{"additionalProperties":false,"properties":{"apply_match_filters":{"type":"boolean"},"business_name":{"type":"string"},"dba":{"type":"string"},"filed_after":{"format":"date","type":"string"},"max_pages":{"default":5,"minimum":1,"type":"integer"},"owner":{"$ref":"#/components/schemas/CourtOwner"},"page":{"default":1,"minimum":1,"type":"integer"},"party_side":{"enum":["defensive","plaintiff"],"type":"string"},"query":{"type":"string"},"search_for":{"enum":["lawsuits","bankruptcies","all"],"type":"string"},"states":{"items":{"type":"string"},"minItems":1,"type":"array"}},"type":"object"},"CoverageResponseSchema":{"properties":{"fields":{"additionalProperties":{"items":{"enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application"]},"type":"array"},"description":"Per field, the sources outside the deal whose reports state it, best authority first, keyed as the verification response keys the field (an owner's as `owner.ssn`). Empty where no source states the field, so nothing can compare it against the claim.","type":"object"}},"type":"object"},"CreateBrokerFunderApiKeySchema":{"properties":{"email":{"description":"Broker email address","format":"email","type":"string"}},"required":["email"],"type":"object"},"CreateBrokerSubmissionSchema":{"properties":{"name":{"description":"The name of the submission being made, this is purely for user reference.","minLength":10,"type":"string"}},"required":["name"],"type":"object"},"CreateEndUserEntityAttributeSchema":{"properties":{"attribute_description":{"type":"string"},"attribute_name":{"type":"string"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"display_order":{"type":"integer"},"is_dedupe_key":{"default":false,"type":"boolean"},"reconciliation_config":{"additionalProperties":{},"type":"object"},"reconciliation_strategy":{"enum":["sort_order","llm","comparison","concatenate_lists"]}},"required":["attribute_name"],"type":"object"},"CreateEndUserEntityAttributeSourceSchema":{"properties":{"sort_order":{"type":"integer"},"source_config":{"additionalProperties":{},"type":"object"},"source_type":{"enum":["parsed_end_user_file","api","rel_6","end_user_enricher","company_attribute","static_value","end_user_query","broker_submission_api","crm"]}},"type":"object"},"CreateEndUserEntitySchema":{"properties":{"display_order":{"type":"integer"},"entity_description":{"type":"string"},"entity_name":{"type":"string"},"entity_post_processor_configs":{"default":[],"items":{"additionalProperties":{},"type":"object"},"type":"array"},"is_list":{"type":"boolean"},"saved_query_heron_id":{"nullable":true,"type":"string"}},"required":["entity_name"],"type":"object"},"CreateFileRenameRuleSchema":{"properties":{"end_user_file_class":{"type":"string"},"file_name_template":{"type":"string"},"is_enabled":{"type":"boolean"},"variables":{"items":{"$ref":"#/components/schemas/VariableDefinition"},"type":"array"}},"required":["end_user_file_class","file_name_template","is_enabled"],"type":"object"},"CreateFunderSchema":{"additionalProperties":false,"properties":{"aliases":{"items":{"type":"string"},"type":"array"},"classification_instructions":{"nullable":true,"type":"string"},"email_domains":{"items":{"type":"string"},"type":"array"},"extraction_instructions":{"nullable":true,"type":"string"},"merchant_heron_id":{"type":"string"},"name":{"type":"string"},"offer_email_instructions":{"nullable":true,"type":"string"},"offer_portal_instructions":{"nullable":true,"type":"string"},"offer_source":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_channel":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_email_address":{"nullable":true,"type":"string"}},"required":["merchant_heron_id","name"],"type":"object"},"CreateInteractionLogSchema":{"properties":{"attributes":{"additionalProperties":{},"description":"Arbitrary JSON attributes","nullable":true,"type":"object"},"end_user_heron_id":{"description":"Heron ID of the end user","nullable":true,"type":"string"},"name":{"description":"Interaction name/type","maxLength":256,"minLength":1,"type":"string"},"session_uuid":{"description":"PostHog session UUID","maxLength":36,"minLength":1,"type":"string"}},"required":["name","session_uuid"],"type":"object"},"CreateKeySchema":{"properties":{"name":{"description":"A descriptive name for the key","maxLength":128,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"CreateMcpEndpointSchema":{"additionalProperties":false,"properties":{"label":{"description":"Human-readable label for this endpoint","maxLength":128,"minLength":1,"type":"string"},"require_request_secret":{"default":false,"description":"Issue a secret that every MCP request to this endpoint must carry in its X-Auth-Token header. It is returned once, in this response.","type":"boolean"}},"required":["label"],"type":"object"},"CreditScoreCheck":{"properties":{"chosen_by":{"description":"The source `value` was taken from: the first this field prefers that stated anything. Not the source the others are read against, which `source_to_verify` names. Null when nothing stated the field.","enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application",null],"nullable":true},"chosen_score":{"allOf":[{"$ref":"#/components/schemas/ChosenCreditScore"}],"description":"The score `value` was taken from, with its bureau, model and date. Two sources agree when they state the same number. Null when no source stated a score.","nullable":true},"label":{"description":"The field as a reader reads it, such as `Legal business name`.","type":"string"},"source_to_verify":{"description":"The source that is being verified.","enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application",null],"nullable":true},"sources":{"description":"One line per source, in the order this field prefers them.","items":{"$ref":"#/components/schemas/SourceVerification"},"type":"array"},"state":{"description":"`verified` when a source independent of the deal confirms what it claimed, `conflict` when any source contradicts it, the deal's own other channels included. `not_verified` means nothing independent confirmed it: nothing else spoke to the claim, or only another channel of the deal restated it, or the deal claimed nothing to check. `blank` means nobody stated a value at all.","enum":["verified","conflict","not_verified","blank"]},"value":{"description":"The best answer the sources hold: the value of the first one this field prefers that stated anything. Not what the deal claimed, which `state` reports on instead, so a field can show a registry's value and read `conflict`. Null when no source stated the field.","nullable":true,"type":"string"}},"type":"object"},"CreditScoreWrite":{"additionalProperties":false,"properties":{"bureau":{"description":"The bureau that produced the score; null or omitted when unknown.","enum":["equifax","experian","transunion","unknown",null],"nullable":true},"heron_id":{"description":"The credit score entity returned by GET. Omit it to declare a new score.","nullable":true,"type":"string"},"score":{"description":"The numeric score to state for this owner.","type":"integer"},"score_model":{"description":"The scoring model family; null or omitted when unknown.","enum":["fico","vantagescore","unknown",null],"nullable":true},"score_version_raw":{"description":"The scoring model version, such as `8`; null or omitted when unknown.","nullable":true,"type":"string"},"scored_on":{"description":"The date the score was calculated, in ISO 8601 format; null or omitted when unknown.","format":"date","nullable":true,"type":"string"}},"required":["score"],"type":"object"},"CriminalCharge":{"properties":{"additional_fields":{"description":"Fields the source reported about this count that have no named home on it, kept verbatim. Identity and demographic rows never appear here.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"counts":{"description":"How many counts of this offence were charged.","nullable":true,"type":"integer"},"disposition_date":{"description":"Date this count was disposed of.","format":"date","nullable":true,"type":"string"},"disposition_raw":{"description":"How this count ended, in the court's own words.","nullable":true,"type":"string"},"fee_amount":{"description":"Court fees on this count as a decimal string.","nullable":true,"type":"number"},"fine_amount":{"description":"Fine imposed on this count as a decimal string.","nullable":true,"type":"number"},"is_duplicate_report":{"description":"True when the source published this same count twice, which happens where a district and a circuit both report one docket. Counting it once is the reader's decision to make, so both are shown and the second is flagged.","type":"boolean"},"max_sentence_months":{"description":"The maximum sentence in months, where the court states one.","nullable":true,"type":"integer"},"offense_raw":{"description":"What was charged, in the court's own words.","nullable":true,"type":"string"},"parole_status":{"description":"Parole standing recorded against this count.","nullable":true,"type":"string"},"plea_date":{"description":"Date the plea was entered.","format":"date","nullable":true,"type":"string"},"plea_raw":{"description":"The plea entered on this count, in the court's own words.","nullable":true,"type":"string"},"probation_months":{"description":"Months of probation ordered, where the court states a term.","nullable":true,"type":"integer"},"probation_violation":{"description":"Any probation violation recorded against this count.","nullable":true,"type":"string"},"sentence_description":{"description":"The sentence passed on this count, in the court's own words.","nullable":true,"type":"string"},"sequence":{"description":"The count's ordinal within the case, as the court numbered it. It is what tells three counts of one offence apart when every other field on them reads the same.","nullable":true,"type":"string"},"severity_raw":{"description":"How serious the court graded this count, in its own words.","nullable":true,"type":"string"},"source":{"description":"The source that stated this count.","type":"string"},"source_entry_id":{"description":"The source's own reference for this count. Numbered within one search, so the same reference under a different subject is a different count.","nullable":true,"type":"string"},"statute":{"description":"The statute said to have been violated.","nullable":true,"type":"string"},"verdict_raw":{"description":"The verdict on this count, in the court's own words.","nullable":true,"type":"string"},"warrant_date":{"description":"Date a warrant issued on this count.","format":"date","nullable":true,"type":"string"}},"type":"object"},"CriminalChargeEntrySchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"actual_release_date":{"description":"Actual release date from custody; null when unavailable.","format":"date","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest; null when unavailable.","format":"date","nullable":true,"type":"string"},"arresting_agency":{"description":"Arresting agency named on the source record; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"The court's live case status, such as DISCHARGE or PENDING. Can resolve a case even when no disposition is recorded; null when unavailable.","nullable":true,"type":"string"},"case_status_date":{"description":"Date of the case status; null when unavailable.","format":"date","nullable":true,"type":"string"},"categories":{"description":"Offence classifications: fraud, violent, dui, drug, burglary, domestic_violence, child_related, sex_offense, murder_homicide, fiduciary, or other.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"category":{"description":"Source-provided offence category string.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Date the offence occurred, distinct from the case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"disposition":{"description":"Case or charge outcome; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Date of the disposition; null when unavailable.","format":"date","nullable":true,"type":"string"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"fine_amount":{"description":"Fine imposed as a decimal string; null when unavailable.","nullable":true,"type":"number"},"grade":{"description":"Offence grade: felony, misdemeanor, petty_misdemeanor, infraction, or unknown.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown"]},"is_dismissed":{"description":"True when the case was dismissed or not prosecuted.","type":"boolean"},"is_felony":{"description":"True when any charge on the case is a felony.","type":"boolean"},"number_of_counts":{"description":"Number of counts; null when unavailable.","nullable":true,"type":"integer"},"offense":{"description":"Offence as recorded on the source document.","nullable":true,"type":"string"},"offense_location":{"description":"Where the offence took place; null when unavailable.","nullable":true,"type":"string"},"parole_status":{"description":"Parole status; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"The plea entered - the changed plea when one exists, else the original; null when unavailable.","nullable":true,"type":"string"},"plea_date":{"description":"Date of the plea; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_end_date":{"description":"Probation end date - the actual end when recorded, else the scheduled end; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_violation":{"description":"Probation violation as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"projected_release_date":{"description":"Projected release date from custody, falling back to the tentative then maximum release date; null when unavailable.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sentence":{"description":"Sentence text; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"severity_text":{"description":"Source-provided severity string.","nullable":true,"type":"string"},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"statute_code":{"description":"Statute code; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"CriminalRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"actual_release_date":{"description":"Actual release date from custody; null when unavailable.","format":"date","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest; null when unavailable.","format":"date","nullable":true,"type":"string"},"arresting_agency":{"description":"Arresting agency named on the source record; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"The court's live case status, such as DISCHARGE or PENDING. Can resolve a case even when no disposition is recorded; null when unavailable.","nullable":true,"type":"string"},"case_status_date":{"description":"Date of the case status; null when unavailable.","format":"date","nullable":true,"type":"string"},"categories":{"description":"Offence classifications: fraud, violent, dui, drug, burglary, domestic_violence, child_related, sex_offense, murder_homicide, fiduciary, or other.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"category":{"description":"Source-provided offence category string.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Date the offence occurred, distinct from the case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"disposition":{"description":"Case or charge outcome; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Date of the disposition; null when unavailable.","format":"date","nullable":true,"type":"string"},"entry_count":{"description":"Number of underlying source entries combined into this record.","type":"integer"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"fine_amount":{"description":"Fine imposed as a decimal string; null when unavailable.","nullable":true,"type":"number"},"grade":{"description":"Offence grade: felony, misdemeanor, petty_misdemeanor, infraction, or unknown.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown"]},"is_dismissed":{"description":"True when the case was dismissed or not prosecuted.","type":"boolean"},"is_felony":{"description":"True when any charge on the case is a felony.","type":"boolean"},"is_unclassified":{"description":"True when the offence could not be classified.","type":"boolean"},"number_of_counts":{"description":"Number of counts; null when unavailable.","nullable":true,"type":"integer"},"offense":{"description":"Offence as recorded on the source document.","nullable":true,"type":"string"},"offense_location":{"description":"Where the offence took place; null when unavailable.","nullable":true,"type":"string"},"parole_status":{"description":"Parole status; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"The plea entered - the changed plea when one exists, else the original; null when unavailable.","nullable":true,"type":"string"},"plea_date":{"description":"Date of the plea; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_end_date":{"description":"Probation end date - the actual end when recorded, else the scheduled end; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_violation":{"description":"Probation violation as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"projected_release_date":{"description":"Projected release date from custody, falling back to the tentative then maximum release date; null when unavailable.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sentence":{"description":"Sentence text; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"severity_text":{"description":"Source-provided severity string.","nullable":true,"type":"string"},"shared_case_key":{"description":"Stable key for a record that appears on both owner and business reports; null when not shared.","nullable":true,"type":"string"},"shared_relationship":{"description":"Where the shared record also appears: also_on_business or also_on_owner; null when not shared.","enum":["also_on_owner","also_on_business",null],"nullable":true,"type":"string"},"source_entries":{"description":"Underlying source rows combined into this record.","items":{"$ref":"#/components/schemas/CriminalChargeEntrySchema"},"type":"array"},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"source_entry_ids":{"description":"References for the underlying source rows combined into this record.","items":{"type":"string"},"type":"array"},"statute_code":{"description":"Statute code; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"CriminalSectionEntrySchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"actual_release_date":{"description":"Actual release date from custody; null when unavailable.","format":"date","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest; null when unavailable.","format":"date","nullable":true,"type":"string"},"arresting_agency":{"description":"Arresting agency named on the source record; null when unavailable.","nullable":true,"type":"string"},"bail_amount":{"description":"Bail amount on this entry as a decimal string; null when unavailable.","nullable":true,"type":"number"},"booking_number":{"description":"Booking reference on this entry; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"The court's live case status, such as DISCHARGE or PENDING. Can resolve a case even when no disposition is recorded; null when unavailable.","nullable":true,"type":"string"},"case_status_date":{"description":"Date of the case status; null when unavailable.","format":"date","nullable":true,"type":"string"},"categories":{"description":"Offence classifications: fraud, violent, dui, drug, burglary, domestic_violence, child_related, sex_offense, murder_homicide, fiduciary, or other.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"category":{"description":"Source-provided offence category string.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Date the offence occurred, distinct from the case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"disposition":{"description":"Case or charge outcome; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Date of the disposition; null when unavailable.","format":"date","nullable":true,"type":"string"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"fine_amount":{"description":"Fine imposed as a decimal string; null when unavailable.","nullable":true,"type":"number"},"grade":{"description":"Offence grade: felony, misdemeanor, petty_misdemeanor, infraction, or unknown.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown"]},"is_dismissed":{"description":"True when the case was dismissed or not prosecuted.","type":"boolean"},"is_felony":{"description":"True when any charge on the case is a felony.","type":"boolean"},"mugshot_record_id":{"description":"Stable identifier used to request this entry's mug shot; null when it has none.","nullable":true,"type":"string"},"number_of_counts":{"description":"Number of counts; null when unavailable.","nullable":true,"type":"integer"},"offense":{"description":"Offence as recorded on the source document.","nullable":true,"type":"string"},"offense_location":{"description":"Where the offence took place; null when unavailable.","nullable":true,"type":"string"},"parole_status":{"description":"Parole status; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"The plea entered - the changed plea when one exists, else the original; null when unavailable.","nullable":true,"type":"string"},"plea_date":{"description":"Date of the plea; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_end_date":{"description":"Probation end date - the actual end when recorded, else the scheduled end; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_violation":{"description":"Probation violation as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"projected_release_date":{"description":"Projected release date from custody, falling back to the tentative then maximum release date; null when unavailable.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sentence":{"description":"Sentence text; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"severity_text":{"description":"Source-provided severity string.","nullable":true,"type":"string"},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"state":{"description":"State this entry was reported in; null when unavailable.","nullable":true,"type":"string"},"statute_code":{"description":"Statute code; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"CriminalSectionRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"actual_release_date":{"description":"Actual release date from custody; null when unavailable.","format":"date","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest; null when unavailable.","format":"date","nullable":true,"type":"string"},"arrest_time":{"description":"Time of the arrest; null when unavailable.","nullable":true,"type":"string"},"arresting_agency":{"description":"Arresting agency named on the source record; null when unavailable.","nullable":true,"type":"string"},"bail_amount":{"description":"Bail amount on the record as a decimal string; null when unavailable.","nullable":true,"type":"number"},"booking_date":{"description":"Date of the booking; null when unavailable.","format":"date","nullable":true,"type":"string"},"booking_location":{"description":"Booking location; null when unavailable.","nullable":true,"type":"string"},"booking_number":{"description":"Booking reference; null when unavailable.","nullable":true,"type":"string"},"booking_time":{"description":"Time of the booking; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"The court's live case status, such as DISCHARGE or PENDING. Can resolve a case even when no disposition is recorded; null when unavailable.","nullable":true,"type":"string"},"case_status_date":{"description":"Date of the case status; null when unavailable.","format":"date","nullable":true,"type":"string"},"categories":{"description":"Offence classifications: fraud, violent, dui, drug, burglary, domestic_violence, child_related, sex_offense, murder_homicide, fiduciary, or other.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"category":{"description":"Source-provided offence category string.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Date the offence occurred, distinct from the case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"disposition":{"description":"Case or charge outcome; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Date of the disposition; null when unavailable.","format":"date","nullable":true,"type":"string"},"entry_count":{"description":"Number of underlying source entries combined into this record.","type":"integer"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"fine_amount":{"description":"Fine imposed as a decimal string; null when unavailable.","nullable":true,"type":"number"},"grade":{"description":"Offence grade: felony, misdemeanor, petty_misdemeanor, infraction, or unknown.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown"]},"is_dismissed":{"description":"True when the case was dismissed or not prosecuted.","type":"boolean"},"is_felony":{"description":"True when any charge on the case is a felony.","type":"boolean"},"is_unclassified":{"description":"True when the offence could not be classified.","type":"boolean"},"mugshot_record_id":{"description":"Stable identifier used to request this record's mug shot; null when no mug shot is available.","nullable":true,"type":"string"},"number_of_counts":{"description":"Number of counts; null when unavailable.","nullable":true,"type":"integer"},"offense":{"description":"Offence as recorded on the source document.","nullable":true,"type":"string"},"offense_county":{"description":"County where the offence occurred; null when unavailable.","nullable":true,"type":"string"},"offense_location":{"description":"Where the offence took place; null when unavailable.","nullable":true,"type":"string"},"parole_status":{"description":"Parole status; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"The plea entered - the changed plea when one exists, else the original; null when unavailable.","nullable":true,"type":"string"},"plea_date":{"description":"Date of the plea; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_end_date":{"description":"Probation end date - the actual end when recorded, else the scheduled end; null when unavailable.","format":"date","nullable":true,"type":"string"},"probation_violation":{"description":"Probation violation as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"projected_release_date":{"description":"Projected release date from custody, falling back to the tentative then maximum release date; null when unavailable.","format":"date","nullable":true,"type":"string"},"record_type":{"description":"Record class: Criminal case or Arrest record.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sentence":{"description":"Sentence text; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"severity_text":{"description":"Source-provided severity string.","nullable":true,"type":"string"},"shared_case_key":{"description":"Stable key for a record that appears on both owner and business reports; null when not shared.","nullable":true,"type":"string"},"shared_relationship":{"description":"Where the shared record also appears: also_on_business or also_on_owner; null when not shared.","enum":["also_on_owner","also_on_business",null],"nullable":true,"type":"string"},"source_entries":{"description":"Underlying source rows combined into this record: one per charge for a court case, one per reported arrest entry for an arrest.","items":{"$ref":"#/components/schemas/CriminalSectionEntrySchema"},"type":"array"},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"source_entry_ids":{"description":"References for the underlying source rows combined into this record.","items":{"type":"string"},"type":"array"},"state":{"description":"State the arrest record was reported in; null when unavailable.","nullable":true,"type":"string"},"statute_code":{"description":"Statute code; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"CrmConfig":{"properties":{"child_file_filtering_enabled":{"default":true,"description":"Whether to filter out child files (files that have a parent file)","type":"boolean"},"data_source_accounts_config":{"allOf":[{"$ref":"#/components/schemas/CrmObjectConfig"}],"description":"The data source accounts configuration for the CRM integration","nullable":true},"default_id":{"allOf":[{"$ref":"#/components/schemas/CrmObjectId"}],"description":"The default object id for the CRM integration","nullable":true},"download_legacy_attachments":{"default":false,"description":"Whether to download legacy Salesforce Attachment records","type":"boolean"},"object_configs":{"default":[],"description":"The object configurations for the CRM integration","items":{"$ref":"#/components/schemas/CrmObjectConfig"},"type":"array"},"policy_evaluation_config":{"allOf":[{"$ref":"#/components/schemas/CrmPolicyEvaluationConfig"}],"description":"The policy evaluation configuration for the CRM integration","nullable":true},"small_file_filtering_enabled":{"default":false,"description":"Whether to filter out files smaller than 400 bytes","type":"boolean"},"sync_file_classes":{"additionalProperties":{"type":"boolean"},"default":{},"description":"Whether to sync files of a given class, including emails","type":"object"},"value_mappings":{"default":[],"description":"A list of value mappings for the CRM integration","items":{"$ref":"#/components/schemas/CrmValueMapping"},"type":"array"}},"type":"object"},"CrmExternalLookupConfig":{"properties":{"external_lookup_fields_and":{"description":"External lookup fields are what is used to try match potential new objects to existing objects in the CRM (i.e., for deduplication). Used in the and condition.","items":{"type":"string"},"type":"array"},"external_lookup_fields_or":{"description":"External lookup fields are what is used to try match potential new objects to existing objects in the CRM (i.e., for deduplication). Used in the or condition.","items":{"type":"string"},"type":"array"},"sort_field_name":{"default":"CreatedDate","description":"The field name to sort by when doing the external lookup","example":"CreatedDate","type":"string"},"sort_order":{"description":"The sort order when doing the external lookup","enum":["ASC","DESC"],"type":"string"}},"type":"object"},"CrmFieldMapping":{"properties":{"external_lookup_field_name":{"description":"Override field name to use for external lookup instead of the field_name","nullable":true,"type":"string"},"external_object_name_for_id":{"description":"The external object whose id we want to use populate the field value","example":"Account","nullable":true,"type":"string"},"field_name":{"description":"The name of the field in the CRM","example":"Name","type":"string"},"heron_company_attribute_label":{"description":"The label of the company attribute in Heron","example":"owner_1_first_name","nullable":true,"type":"string"},"max_length":{"description":"The max length of the crm field this should be mapped to. Used for string fields. If set, the string will be truncated.","example":255,"nullable":true,"type":"integer"},"overwrite_on_update":{"default":true,"description":"Whether the field should be overwritten on update. True by default. When False, the field will only be set on creation","example":true,"type":"boolean"},"regex_remove":{"description":"Any pattern that should be removed from the company attribute value","example":"pattern","nullable":true,"type":"string"},"required":{"default":false,"description":"Whether the field is required","example":true,"type":"boolean"},"static_value":{"description":"A static value for the field","example":"static value","nullable":true,"type":"string"},"static_value_key":{"description":"The value key of the static data","enum":["date_today",null],"nullable":true,"type":"string"},"value_mapping_name":{"description":"Name of the value mapping to use for the field","example":"state","nullable":true,"type":"string"},"value_type":{"description":"The crm type of the field","example":"Text","nullable":true,"type":"string"}},"required":["field_name"],"type":"object"},"CrmIntegrationPatchSchema":{"additionalProperties":true,"properties":{"auth":{"additionalProperties":{},"description":"Authentication details for the CRM integration","type":"object","writeOnly":true},"config":{"allOf":[{"$ref":"#/components/schemas/CrmConfig"}],"description":"The configuration for the CRM integration"},"failure_notification_channel":{"description":"The channel to send failure notifications to","nullable":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"instance_url":{"description":"Base URL of the CRM integration","example":"https://sandbox.salesforce.com","format":"url","type":"string"},"is_enabled":{"default":true,"description":"Whether the integration is enabled","example":true,"type":"boolean"},"is_live":{"default":true,"description":"Whether the integration is live","example":true,"type":"boolean"},"provider":{"description":"The CRM provider","type":"string"},"secret":{"description":"A secret key for the CRM integration","type":"string","writeOnly":true}},"type":"object"},"CrmIntegrationSchema":{"additionalProperties":true,"properties":{"auth":{"additionalProperties":{},"description":"Authentication details for the CRM integration","type":"object","writeOnly":true},"config":{"allOf":[{"$ref":"#/components/schemas/CrmConfig"}],"description":"The configuration for the CRM integration"},"failure_notification_channel":{"description":"The channel to send failure notifications to","nullable":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"instance_url":{"description":"Base URL of the CRM integration","example":"https://sandbox.salesforce.com","format":"url","type":"string"},"is_enabled":{"default":true,"description":"Whether the integration is enabled","example":true,"type":"boolean"},"is_live":{"default":true,"description":"Whether the integration is live","example":true,"type":"boolean"},"provider":{"description":"The CRM provider","type":"string"},"secret":{"description":"A secret key for the CRM integration","type":"string","writeOnly":true}},"required":["auth","config","instance_url","provider","secret"],"type":"object"},"CrmObjectConfig":{"properties":{"description":{"description":"Human-readable description of the object","example":"A company or person","nullable":true,"type":"string"},"external_lookup_config":{"allOf":[{"$ref":"#/components/schemas/CrmExternalLookupConfig"}],"description":"Configuration for external lookup","nullable":true},"external_name":{"description":"The exact name of the object in the CRM","example":"Account","type":"string"},"field_mappings":{"description":"Mapping for Heron fields to object fields in CRM","items":{"$ref":"#/components/schemas/CrmFieldMapping"},"type":"array"},"is_optional":{"default":false,"description":"Whether the object is optional. Optional means that if object fails it will not stop execution of CRM sync","type":"boolean"},"key":{"description":"key should be unique among objects within an integration","example":"Account","type":"string"},"required_ids":{"description":"List of object ids that new object needs","items":{"$ref":"#/components/schemas/CrmObjectId"},"type":"array"},"static_data":{"description":"Stores static data used by the integration, for example status fields","items":{"$ref":"#/components/schemas/CrmStaticData"},"type":"array"}},"required":["external_name","key"],"type":"object"},"CrmObjectId":{"properties":{"alias":{"description":"An alias for the object in the CRM","example":"Company","nullable":true,"type":"string"},"external_name":{"description":"The exact name of the object in the CRM","example":"Account","type":"string"}},"required":["external_name"],"type":"object"},"CrmPolicyEvaluationConfig":{"properties":{"external_object_name":{"description":"The object to write policy evaluation results to","example":"Opportunity","type":"string"},"failure_reason_external_name":{"description":"The field to write policy evaluation failure reason to","example":"Failure_Reason__c","type":"string"},"result_external_name":{"description":"The field to write policy evaluation results","example":"Submission_Result_from_Heron__c","type":"string"}},"required":["external_object_name"],"type":"object"},"CrmStaticData":{"properties":{"key":{"description":"The key of the static data","example":"status","type":"string"},"value":{"description":"The value of the static data","example":"active"}},"required":["key","value"],"type":"object"},"CrmSyncEvent":{"properties":{"crm_record_url":{"nullable":true,"type":"string"},"error_message":{"nullable":true,"type":"string"},"heron_id":{"type":"string"},"name":{"type":"string"},"occurred_at":{"format":"date-time","type":"string"},"provider":{"nullable":true,"type":"string"},"result":{"enum":["success","failure","no_sync_attempted"]},"success_message":{"nullable":true,"type":"string"}},"type":"object"},"CrmSyncEventSchema":{"properties":{"crm_record_url":{"nullable":true,"type":"string"},"error_message":{"nullable":true,"type":"string"},"heron_id":{"type":"string"},"name":{"type":"string"},"occurred_at":{"format":"date-time","type":"string"},"provider":{"nullable":true,"type":"string"},"result":{"enum":["success","failure","no_sync_attempted"]},"success_message":{"nullable":true,"type":"string"}},"type":"object"},"CrmValueMapping":{"properties":{"default_value":{"description":"The default value to use when no match is found","example":"Default","nullable":true,"type":"string"},"description":{"description":"A human-readable description of the value mapping","example":"The status of the company","nullable":true,"type":"string"},"mapping":{"additionalProperties":{},"description":"The mapping of values","example":{"CA":"California","NY":"New York"},"type":"object"},"name":{"description":"The name of the value mapping","example":"Status","type":"string"},"use_partial_match":{"default":false,"description":"Whether to use partial match when mapping values","type":"boolean"}},"required":["mapping","name"],"type":"object"},"CustomerFunderExclusionRuleInputSchema":{"additionalProperties":false,"properties":{"not_senders":{"items":{"type":"string"},"type":"array"},"sender_domains":{"items":{"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$","type":"string"},"type":"array"},"sender_emails":{"items":{"format":"email","type":"string"},"type":"array"},"sender_names":{"items":{"type":"string"},"type":"array"}},"type":"object"},"CustomerFunderExclusionRuleSchema":{"properties":{"funder":{"allOf":[{"$ref":"#/components/schemas/FunderSearchResultSchema"}],"readOnly":true},"funder_heron_id":{"readOnly":true,"type":"string"},"not_senders":{"items":{"type":"string"},"readOnly":true,"type":"array"},"reason":{"readOnly":true,"type":"string"},"sender_domains":{"items":{"type":"string"},"readOnly":true,"type":"array"},"sender_emails":{"items":{"type":"string"},"readOnly":true,"type":"array"},"sender_names":{"items":{"type":"string"},"readOnly":true,"type":"array"}},"type":"object"},"DataSource":{"properties":{"status":{"description":"Status of the data source entity, where applicable (e.g. pdfs, integration links)","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded","pending","active","syncing","erroring","sync_disabled","deleted_in_plaid","unknown"],"example":"new","type":"string"},"type":{"description":"Data source type","enum":["api","csv","pdf","integration_link","legacy","legacy_pdf","legacy_integration_link"],"example":"pdf","type":"string"}},"required":["type"],"type":"object"},"DataSourceAccount":{"properties":{"account_id":{"description":"PDF statement account identifier. Null for non-PDF sources.","example":"202348","nullable":true,"type":"string"},"anomaly_reasons":{"description":"Reasons associated with anomaly_score for pdf bank statement account sources","example":["Statement metadata changed","Manual review flagged suspicious edits"],"items":{"type":"string"},"nullable":true,"type":"array"},"anomaly_score":{"description":"For pdf bank statement account sources, where the value is between 0 and 1000, with 1000 being the most anomalous","example":200,"type":"integer"},"balances":{"description":"List of balances associated with the account","example":[{"closing_amount":25000.45,"currency":"USD","date":"2022-01-01"}],"items":{"$ref":"#/components/schemas/AccountBalance"},"type":"array"},"currency":{"description":"Currency of the account","example":"USD","type":"string"},"dba":{"description":"Doing Business As name printed on the bank statement","example":"Chickys","nullable":true,"type":"string"},"display_account_id":{"description":"Human-readable account label for display: the last four digits of the account number (falling back to the account title). Not unique and not a key; join heron_id to data_source_account_heron_id on transactions.","example":"7505","nullable":true,"type":"string"},"end_date":{"description":"End date of the account","example":"2022-01-31","format":"date","type":"string"},"heron_id":{"description":"Unique ID for data source generated by Heron","example":"dso_e9oWAjsmyUkhrxbT9aaVZj","type":"string"},"institution_name":{"description":"Name of the institution","example":"Chase","type":"string"},"is_enabled":{"description":"Whether or not the account is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"},"max_date":{"description":"Latest date of transactions associated with the data source account","example":"2022-01-31","format":"date","type":"string"},"min_date":{"description":"Earliest date of transactions associated with the data source account","example":"2022-01-01","format":"date","type":"string"},"name":{"description":"Name of the account","example":"Checking Account","type":"string"},"num_transactions":{"description":"Number of transactions associated with the data source account","example":120,"type":"integer"},"number":{"description":"Number of the account","example":"123456789","type":"string"},"owner_name":{"description":"Name of the account owner","example":"John Doe","type":"string"},"reference_id":{"description":"This is the account ID provided as part of the transaction","example":"account-202348","type":"string"},"start_date":{"description":"Start date of the account","example":"2022-01-01","format":"date","type":"string"},"transactions_match_balances":{"description":"For pdf bank statements, represents whether all transactions extracted match the balances extracted","example":true,"type":"boolean"},"type":{"description":"Type of the account","example":"Checking","type":"string"}},"required":["is_enabled"],"type":"object"},"DataSourceAccountDateReconciliationMetrics":{"properties":{"data_source_account_heron_id":{"readOnly":true},"date":{"format":"date","type":"string"},"metrics":{"items":{"$ref":"#/components/schemas/DataSourceAccountReconciliationMetric"},"type":"array"}},"required":["data_source_account_heron_id","date","metrics"],"type":"object"},"DataSourceAccountNested":{"properties":{"heron_id":{"description":"Heron ID of the data source account","type":"string"},"is_enabled":{"description":"Whether this data source account is enabled","type":"boolean"}},"type":"object"},"DataSourceAccountReconciliationMetric":{"properties":{"category_label":{"type":"string"},"metric":{"enum":["num_txns","num_inflow_txns","num_outflow_txns","num_txns_with_balance","num_txns_with_negative_balance","num_overdraft_fee_units","num_nsf_fee_units","num_ambiguous_od_nsf_fee_units","num_items_returned_unpaid","amount__sum","amount_inflow__sum","amount_outflow__sum","amount_inflow__max","amount_outflow__max","amount_inflow__min","amount_outflow__min","amount_inflow_squared__sum","amount_outflow_squared__sum","confidence_x_amount_inflow__sum","confidence_x_amount_outflow__sum"]},"value":{"$ref":"#/components/schemas/Money"}},"required":["category_label","metric","value"],"type":"object"},"DataSourceAccountSummary":{"properties":{"account":{"$ref":"#/components/schemas/EndUserDataSourceAccount"},"all_transactions_summary":{"allOf":[{"$ref":"#/components/schemas/DataSourceAccountSummaryRow"}],"description":"The same metrics over every loaded transaction, month-to-date statements included, where `summary` covers bank statements only. When the end user does not load unreconciled transactions the two views are identical, and this mirrors `summary`. additional_no_od is a statement value and is never set here.","nullable":true},"statement_reconciliation_status":{"description":"Whether this account's statement reconciled: reconciled = a check passed, not_possible = the document had nothing to check against, failed = a check ran and did not match, or a human reviewer ruled the document unreconciled. Only reconciled statements count towards `summary` (a null `summary` can have other causes too, such as a disabled account). The value is per document: a multi-statement pdf takes its worst statement's value, so all its accounts read the same. Null for bank connections \u2014 there is no statement to check \u2014 and for pdfs parsed before we recorded reconciliation, which still count.","enum":["failed","not_possible","reconciled",null],"nullable":true,"type":"string"},"summary":{"allOf":[{"$ref":"#/components/schemas/DataSourceAccountSummaryRow"}],"nullable":true}},"type":"object"},"DataSourceAccountSummaryPublicSchema":{"properties":{"data_source_account_summaries":{"items":{"$ref":"#/components/schemas/DataSourceAccountSummary"},"type":"array"},"end_user":{"$ref":"#/components/schemas/EndUser1"}},"type":"object"},"DataSourceAccountSummaryRow":{"properties":{"actual_holdback_percentage":{"description":"Actual MCA payments to revenue as % (raw repayment amounts)","nullable":true,"type":"number"},"additional_no_od":{"description":"Overdraft-item count a bank reports as a statement value for items absent from the transaction list. These items are not included in the transaction-derived no_od field. Null when the statement does not report a count.","nullable":true,"type":"integer"},"average_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Average balance"},"average_balance_to_revenue_ratio":{"description":"Average balance divided by total revenue","type":"number"},"business_day_average_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Average balance over weekdays excluding public holidays","nullable":true},"dd_reversals":{"description":"Number of DD Reversals","type":"integer"},"ending_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Ending balance"},"expected_mca_debits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Expected MCA debits amount"},"holdback_percentage":{"description":"Expected MCA payments to revenue as % (with frequency multiplier)","nullable":true,"type":"number"},"is_mtd":{"description":"Whether this row represents a month-to-date (MTD) partial statement","type":"boolean"},"is_unreconcilable":{"description":"True when the statement period has no usable balance data for reconciliation (e.g. an unreconciled partial-month statement)","nullable":true,"type":"boolean"},"low_balance_days":{"description":"Number of days where end of day balance falls below low balance threshold","type":"integer"},"mca_credits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"MCA credits amount"},"mca_debits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"MCA debits amount"},"negative_balance_days":{"description":"Number of days with negative balance","type":"integer"},"no_deposits":{"description":"Number of deposit transactions","type":"integer"},"no_mca_credits":{"description":"Number of MCA credit transactions","type":"integer"},"no_mca_debits":{"description":"Number of MCA debit transactions","type":"integer"},"no_nsf":{"description":"Number of NSF transactions (unambiguous NSF-only category labels).","type":"integer"},"no_od":{"description":"Number of overdraft transactions (unambiguous OD-only category labels).","type":"integer"},"no_od_nsf":{"description":"Total overdraft/NSF fees: overdraft fees + NSF fees + ambiguous fees.","type":"integer"},"no_overdraft_transactions":{"description":"Number of transactions where the resulting balance falls below 0","type":"integer"},"no_revenue":{"description":"Number of revenue transactions","type":"integer"},"no_withdrawals":{"description":"Number of withdrawals transactions","type":"integer"},"non_revenue":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Non-revenue amount"},"period_end_date":{"description":"The last day covered by the statement period (e.g. a partial April statement covering Apr 1\u201315 has period_end_date=Apr 15, while a full April statement with data only through Apr 15 would still show Apr 30)","format":"date","nullable":true,"type":"string"},"period_start_date":{"description":"The first day covered by the statement period (e.g. a partial April statement covering Apr 5\u201315 has period_start_date=Apr 5)","format":"date","nullable":true,"type":"string"},"starting_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Starting balance for the period"},"total_deposits":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total deposit amount"},"total_revenue":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total revenue amount"},"total_withdrawals":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Total withdrawal amount"}},"type":"object"},"DataSourceAccountUpdateNumberSchema":{"properties":{"source_dsa_heron_id":{"description":"The Heron ID of the data source account containing the number we want to update to","example":"dsa_8w6V5CuRESc7G5yx3mXF54","type":"string"}},"required":["source_dsa_heron_id"],"type":"object"},"DataSourceMetadata":{"properties":{"currency":{"description":"Currency associated with the data source entity, where applicable (e.g. pdfs)","example":"USD","type":"string"},"filename":{"description":"Name of the file uploaded, where applicable (e.g. pdfs)","example":"202348_JAN_2022.pdf","type":"string"},"integration_heron_id":{"description":"Unique Heron ID associated with an integration","example":"itg_L8sTb2F4X7qH2KF2pqUZw2","type":"string"},"integration_item_id":{"description":"Unique item id associated with integration link data sources","example":"Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr","type":"string"},"last_successful_sync":{"description":"Last successful sync date associated with integration link data sources","example":"2026-10-06T22:12:38.035359","format":"date-time","type":"string"},"notes":{"description":"Notes associated with the data source entity, where applicable (e.g. pdfs)","example":"error with processing, 52 invalid transaction(s) extracted from statement","type":"string"},"parsing_version":{"description":"Parsing version associated with the data source entity, where applicable (e.g. pdfs)","example":"1.0.0","type":"string"},"sub_type":{"description":"Sub type of the data source entity, where applicable (e.g. integration links)","example":"transaction","type":"string"}},"type":"object"},"DataSourceNested":{"properties":{"heron_id":{"description":"Heron ID of the data source","type":"string"},"is_enabled":{"description":"Whether this data source is enabled","type":"boolean"}},"type":"object"},"DateCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"type":{"enum":["equal","not_equal","before","before_or_on","after","after_or_on"]},"value":{"format":"date","type":"string"}},"type":"object"},"DateDeltaToNowCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"pass_if_value_missing":{"default":false,"type":"boolean"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"type":{"enum":["greater_than","greater_than_or_equal","less_than","less_than_or_equal"]},"value":{"additionalProperties":{},"nullable":true,"type":"object"}},"type":"object"},"DateRangeSchema":{"properties":{"end_date":{"format":"date-time","type":"string"},"start_date":{"format":"date-time","type":"string"}},"required":["end_date","start_date"],"type":"object"},"DealLinkCandidate":{"properties":{"heron_id":{"readOnly":true,"type":"string"},"latest_activity_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"name":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"DealLinkEntry":{"additionalProperties":false,"properties":{"decline_reason":{"nullable":true,"readOnly":true,"type":"string"},"funder_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"funder_name":{"nullable":true,"readOnly":true,"type":"string"},"name":{"nullable":true,"readOnly":true,"type":"string"},"occurrences":{"items":{"$ref":"#/components/schemas/DealLinkOccurrence"},"readOnly":true,"type":"array"},"opportunity_id":{"readOnly":true,"type":"string"},"role":{"enum":["submission","approval","decline","other","unknown"],"readOnly":true}},"type":"object"},"DealLinkOccurrence":{"additionalProperties":false,"properties":{"created":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"DealRead":{"additionalProperties":false,"properties":{"signals":{"items":{"$ref":"#/components/schemas/RecommendationSignal"},"readOnly":true,"type":"array"},"strength":{"readOnly":true,"type":"string"}},"type":"object"},"DealSetCheckFilter":{"properties":{"check_identity":{"readOnly":true,"type":"string"},"result":{"readOnly":true,"type":"string"},"section_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"DealSetParams":{"properties":{"check_filter":{"allOf":[{"$ref":"#/components/schemas/DealSetCheckFilter"}],"nullable":true,"readOnly":true},"end_user_heron_ids":{"items":{"type":"string"},"readOnly":true,"type":"array"},"limit":{"readOnly":true,"type":"integer"},"window_end":{"description":"ISO 8601, exclusive","readOnly":true,"type":"string"},"window_start":{"description":"ISO 8601, inclusive","readOnly":true,"type":"string"},"with_policy_result":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"}},"type":"object"},"DeathRecord":{"properties":{"age_at_death":{"description":"Age at death; null when unavailable.","nullable":true,"type":"integer"},"birth_place":{"description":"Birth place of the deceased; null when unavailable.","nullable":true,"type":"string"},"date_of_birth":{"description":"Birth date of the deceased as the source reports it, often partly masked (MM/XX/YYYY); null when unavailable.","nullable":true,"type":"string"},"date_of_death":{"description":"Date of death; null when unavailable.","format":"date","nullable":true,"type":"string"},"date_of_death_note":{"description":"Source text given in place of a date of death, for example 'SSA Death Record reported within the last 3 years'; null when a date is given or nothing is reported.","nullable":true,"type":"string"},"death_certificate_number":{"description":"Death certificate reference; null when unavailable.","nullable":true,"type":"string"},"death_place":{"description":"Place of death; null when unavailable.","nullable":true,"type":"string"},"deceased_name":{"description":"Name on the death record, not the applicant's name; null when unavailable.","nullable":true,"type":"string"},"father_birth_place":{"description":"Father's birth place; null when unavailable.","nullable":true,"type":"string"},"father_name":{"description":"Father named on the record; null when unavailable.","nullable":true,"type":"string"},"last_address":{"description":"Last address listed for the deceased; null when unavailable.","nullable":true,"type":"string"},"matches_subject":{"description":"Whether the deceased_name on the record matches the applicant. Null means the record supplied no name to compare.","nullable":true,"type":"boolean"},"mother_birth_place":{"description":"Mother's birth place; null when unavailable.","nullable":true,"type":"string"},"mother_name":{"description":"Mother named on the record; null when unavailable.","nullable":true,"type":"string"},"record_type":{"description":"Death record class: death_record, deceased_record, obituary_record, or death_summary.","enum":["death_record","deceased_record","obituary_record","death_summary"],"type":"string"},"source":{"description":"Source that supplied the record; null when unavailable.","nullable":true,"type":"string"},"spouse_name":{"description":"Spouse named on the record; null when unavailable.","nullable":true,"type":"string"},"ssn":{"description":"Social Security number of the deceased, masked to the first five digits (123-45-XXXX); null when unavailable.","nullable":true,"type":"string"}},"required":["record_type"],"type":"object"},"DecisionEngineSettings":{"properties":{"beta":{"type":"boolean"},"enabled":{"type":"boolean"}},"type":"object"},"DecisionLogicPostParams":{"properties":{"currency":{"description":"ISO 4217 currency code","example":"USD","type":"string"}},"type":"object"},"DeclineAnalyticsResponseSchema":{"properties":{"check_analytics":{"items":{"$ref":"#/components/schemas/CheckAnalyticsResponse"},"type":"array"},"total_declined":{"type":"integer"},"total_end_users":{"type":"integer"}},"type":"object"},"DeduplicatedAccountSchema":{"properties":{"best_number":{"description":"The longest sanitised account number seen for this group.","example":"8463","nullable":true,"type":"string"},"data_source_account_heron_ids":{"description":"Heron IDs of every DataSourceAccount clustered into this group.","items":{"type":"string"},"type":"array"},"display_account_number":{"example":"8463","nullable":true,"type":"string"},"group_key":{"description":"Interim row key for this deduplicated group. Unstable: it is recomputed on every call from the accounts that currently cluster together. FE row key only - never store it or compare it across requests.","example":"dsa_2N2fEbfWyGxCVzkASN2yiy|dsa_2N2fEcRp2mGwbCd4xTHi33","type":"string"},"heron_id":{"description":"Always null in this interim version - no Account entity exists yet.","nullable":true,"type":"string"},"latest_balance":{"allOf":[{"$ref":"#/components/schemas/AccountBalance"}],"nullable":true},"name":{"example":"Checking","nullable":true,"type":"string"},"source_reference_ids":{"description":"The member DataSourceAccounts' `reference_id` values, which is what analytics endpoints take as `account_ids`. These are not the `account_id` carried on their transactions, which for a PDF-parsed statement is the bare account number.","example":["account_8463_stmt_0","account_8463_stmt_1"],"items":{"type":"string"},"type":"array"}},"type":"object"},"DefaultPolicyBranch":{"properties":{"checks":{"items":{"$ref":"#/components/schemas/Check"},"type":"array"},"condition":{"description":"Not allowed: the default runs when no branch matches. Accepted only to report that at its path","nullable":true,"writeOnly":true},"decline_code":{"description":"Optional code sent with a failed or review_required result","nullable":true,"type":"string"},"decline_description":{"description":"Required when result is failed or review_required","nullable":true,"type":"string"},"heron_id":{"nullable":true,"type":"string"},"name":{"default":"Default","type":"string"},"result":{"description":"What happens to deals no branch matches when the default has no checks; required then","enum":["passed","failed","review_required",null],"nullable":true}},"type":"object"},"DeleteTransactionParams":{"properties":{"account_id":{"description":"account_id of transactions to be deleted","nullable":true,"type":"string"},"end_user_id":{"description":"end_user_id of transactions to be deleted","nullable":true,"type":"string"},"heron_id":{"description":"(legacy) Heron ID of transaction to be deleted","example":"txn_kMnaDaRV8b7QTuTT8R45w6","nullable":true,"type":"string"},"heron_ids":{"default":[],"description":"Heron IDs of transactions to be deleted","items":{"type":"string"},"type":"array"},"only_duplicates":{"description":"if true, deletes only transactions that are marked as duplicates","nullable":true,"type":"boolean"},"reference_ids":{"default":[],"description":"Reference IDs of transactions to be deleted","items":{"type":"string"},"type":"array"},"request_id":{"description":"Request ID of transactions to be deleted","nullable":true,"type":"string"}},"type":"object"},"DetailAttorney":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"bar_number":{"description":"Source-provided bar number; null when unavailable.","nullable":true,"type":"string"},"email":{"description":"Source-provided email address; null when unavailable.","nullable":true,"type":"string"},"firm":{"description":"Source-provided firm; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided attorney name; null when unavailable.","nullable":true,"type":"string"},"phone":{"description":"Source-provided phone number; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided status; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailAttorneySchema":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"bar_number":{"description":"Source-provided bar number; null when unavailable.","nullable":true,"type":"string"},"email":{"description":"Source-provided email address; null when unavailable.","nullable":true,"type":"string"},"firm":{"description":"Source-provided firm; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided attorney name; null when unavailable.","nullable":true,"type":"string"},"phone":{"description":"Source-provided phone number; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided status; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailBail":{"properties":{"bond_number":{"description":"Source-provided bond number; null when unavailable.","nullable":true,"type":"string"},"bondsman":{"description":"Source-provided bondsman; null when unavailable.","nullable":true,"type":"string"},"date":{"description":"Source-provided bail date; null when unavailable.","nullable":true,"type":"string"},"posted":{"description":"Source-provided posted amount; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided bail status; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailBailSchema":{"properties":{"bond_number":{"description":"Source-provided bond number; null when unavailable.","nullable":true,"type":"string"},"bondsman":{"description":"Source-provided bondsman; null when unavailable.","nullable":true,"type":"string"},"date":{"description":"Source-provided bail date; null when unavailable.","nullable":true,"type":"string"},"posted":{"description":"Source-provided posted amount; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided bail status; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailCase":{"properties":{"case_details":{"description":"Source-provided case details; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Source-provided case number; null when unavailable.","nullable":true,"type":"string"},"case_title":{"description":"Source-provided case title; null when unavailable.","nullable":true,"type":"string"},"category":{"description":"Source-provided case category; null when unavailable.","nullable":true,"type":"string"},"chapter":{"description":"Source-provided bankruptcy chapter; null when unavailable.","nullable":true,"type":"string"},"company_interest":{"description":"Source-provided company interest; null when unavailable.","nullable":true,"type":"string"},"county":{"description":"Source-provided county; null when unavailable.","nullable":true,"type":"string"},"court":{"description":"Source-provided court; null when unavailable.","nullable":true,"type":"string"},"discharge_date":{"description":"Source-provided discharge date; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Source-provided disposition date; null when unavailable.","nullable":true,"type":"string"},"division":{"description":"Source-provided court division; null when unavailable.","nullable":true,"type":"string"},"docket_number":{"description":"Source-provided docket number; null when unavailable.","nullable":true,"type":"string"},"document_id":{"description":"Source-provided document reference; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Source-provided filed date; null when unavailable.","nullable":true,"type":"string"},"filing_office":{"description":"Source-provided filing office; null when unavailable.","nullable":true,"type":"string"},"filing_state":{"description":"Source-provided filing state; null when unavailable.","nullable":true,"type":"string"},"final_decree_date":{"description":"Source-provided final decree date; null when unavailable.","nullable":true,"type":"string"},"judge":{"description":"Source-provided judge; null when unavailable.","nullable":true,"type":"string"},"jury_demand":{"description":"Source-provided jury demand; null when unavailable.","nullable":true,"type":"string"},"jury_demand_amount":{"description":"Source-provided jury demand amount; null when unavailable.","nullable":true,"type":"string"},"nature_of_suit":{"description":"Source-provided nature of suit; null when unavailable.","nullable":true,"type":"string"},"nature_of_suit_code":{"description":"Source-provided nature of suit code; null when unavailable.","nullable":true,"type":"string"},"state":{"description":"Source-provided state; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided case status; null when unavailable.","nullable":true,"type":"string"},"sub_category":{"description":"Source-provided case subcategory; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailCaseSchema":{"properties":{"case_details":{"description":"Source-provided case details; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Source-provided case number; null when unavailable.","nullable":true,"type":"string"},"case_title":{"description":"Source-provided case title; null when unavailable.","nullable":true,"type":"string"},"category":{"description":"Source-provided case category; null when unavailable.","nullable":true,"type":"string"},"chapter":{"description":"Source-provided bankruptcy chapter; null when unavailable.","nullable":true,"type":"string"},"company_interest":{"description":"Source-provided company interest; null when unavailable.","nullable":true,"type":"string"},"county":{"description":"Source-provided county; null when unavailable.","nullable":true,"type":"string"},"court":{"description":"Source-provided court; null when unavailable.","nullable":true,"type":"string"},"discharge_date":{"description":"Source-provided discharge date; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Source-provided disposition date; null when unavailable.","nullable":true,"type":"string"},"division":{"description":"Source-provided court division; null when unavailable.","nullable":true,"type":"string"},"docket_number":{"description":"Source-provided docket number; null when unavailable.","nullable":true,"type":"string"},"document_id":{"description":"Source-provided document reference; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Source-provided filed date; null when unavailable.","nullable":true,"type":"string"},"filing_office":{"description":"Source-provided filing office; null when unavailable.","nullable":true,"type":"string"},"filing_state":{"description":"Source-provided filing state; null when unavailable.","nullable":true,"type":"string"},"final_decree_date":{"description":"Source-provided final decree date; null when unavailable.","nullable":true,"type":"string"},"judge":{"description":"Source-provided judge; null when unavailable.","nullable":true,"type":"string"},"jury_demand":{"description":"Source-provided jury demand; null when unavailable.","nullable":true,"type":"string"},"jury_demand_amount":{"description":"Source-provided jury demand amount; null when unavailable.","nullable":true,"type":"string"},"nature_of_suit":{"description":"Source-provided nature of suit; null when unavailable.","nullable":true,"type":"string"},"nature_of_suit_code":{"description":"Source-provided nature of suit code; null when unavailable.","nullable":true,"type":"string"},"state":{"description":"Source-provided state; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided case status; null when unavailable.","nullable":true,"type":"string"},"sub_category":{"description":"Source-provided case subcategory; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailCharge":{"properties":{"additional_fields":{"description":"Unmapped source values as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValue"},"type":"array"},"amended_offense":{"description":"Source-provided amended offence; null when unavailable.","nullable":true,"type":"string"},"amended_statute":{"description":"Source-provided amended statute; null when unavailable.","nullable":true,"type":"string"},"case_comments":{"description":"Source-provided case comments; null when unavailable.","nullable":true,"type":"string"},"case_information":{"description":"Source-provided case information; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Source-provided case number; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"Source-provided case status; null when unavailable.","nullable":true,"type":"string"},"category":{"description":"Source-provided charge category; null when unavailable.","nullable":true,"type":"string"},"citation_number":{"description":"Source-provided citation number; null when unavailable.","nullable":true,"type":"string"},"class_of_offense":{"description":"Source-provided class of offence; null when unavailable.","nullable":true,"type":"string"},"counts":{"description":"Source-provided counts; null when unavailable.","nullable":true,"type":"string"},"court_charge":{"description":"Source-provided court charge; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"Source-provided court county; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Source-provided court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Source-provided crime date; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Source-provided disposition date; null when unavailable.","nullable":true,"type":"string"},"duplicate_report":{"description":"True when the charge duplicates another reported entry.","type":"boolean"},"facts":{"description":"Arrest entries only: this entry's own key facts as label and value pairs, ahead of the unmapped source values.","items":{"$ref":"#/components/schemas/DetailLabelValue"},"type":"array"},"fee_amount":{"description":"Source-provided fee amount; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Source-provided filed date; null when unavailable.","nullable":true,"type":"string"},"fined_amount":{"description":"Source-provided fined amount; null when unavailable.","nullable":true,"type":"string"},"max_sentence_months":{"description":"Source-provided maximum sentence months; null when unavailable.","nullable":true,"type":"string"},"offense":{"description":"Source-provided offence; null when unavailable.","nullable":true,"type":"string"},"offense_code":{"description":"Source-provided offence code; null when unavailable.","nullable":true,"type":"string"},"offense_date":{"description":"Source-provided offence date; null when unavailable.","nullable":true,"type":"string"},"offense_notes":{"description":"Source-provided offence notes; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"Source-provided plea; null when unavailable.","nullable":true,"type":"string"},"probation_months":{"description":"Source-provided probation months; null when unavailable.","nullable":true,"type":"string"},"sentence":{"description":"Source-provided sentence; null when unavailable.","nullable":true,"type":"string"},"sequence":{"description":"Source-provided charge sequence; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Source-provided charge severity; null when unavailable.","nullable":true,"type":"string"},"source_entry_id":{"description":"Source-provided source entry reference; null when unavailable.","nullable":true,"type":"string"},"statute":{"description":"Source-provided statute; null when unavailable.","nullable":true,"type":"string"},"warrant_date":{"description":"Source-provided warrant date; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailChargeSchema":{"properties":{"additional_fields":{"description":"Unmapped source values as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValueSchema"},"type":"array"},"amended_offense":{"description":"Source-provided amended offence; null when unavailable.","nullable":true,"type":"string"},"amended_statute":{"description":"Source-provided amended statute; null when unavailable.","nullable":true,"type":"string"},"case_comments":{"description":"Source-provided case comments; null when unavailable.","nullable":true,"type":"string"},"case_information":{"description":"Source-provided case information; null when unavailable.","nullable":true,"type":"string"},"case_number":{"description":"Source-provided case number; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"Source-provided case status; null when unavailable.","nullable":true,"type":"string"},"category":{"description":"Source-provided charge category; null when unavailable.","nullable":true,"type":"string"},"citation_number":{"description":"Source-provided citation number; null when unavailable.","nullable":true,"type":"string"},"class_of_offense":{"description":"Source-provided class of offence; null when unavailable.","nullable":true,"type":"string"},"counts":{"description":"Source-provided counts; null when unavailable.","nullable":true,"type":"string"},"court_charge":{"description":"Source-provided court charge; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"Source-provided court county; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Source-provided court name; null when unavailable.","nullable":true,"type":"string"},"crime_date":{"description":"Source-provided crime date; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"disposition_date":{"description":"Source-provided disposition date; null when unavailable.","nullable":true,"type":"string"},"duplicate_report":{"description":"True when the charge duplicates another reported entry.","type":"boolean"},"facts":{"description":"Arrest entries only: this entry's own key facts as label and value pairs, ahead of the unmapped source values.","items":{"$ref":"#/components/schemas/DetailLabelValueSchema"},"type":"array"},"fee_amount":{"description":"Source-provided fee amount; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Source-provided filed date; null when unavailable.","nullable":true,"type":"string"},"fined_amount":{"description":"Source-provided fined amount; null when unavailable.","nullable":true,"type":"string"},"max_sentence_months":{"description":"Source-provided maximum sentence months; null when unavailable.","nullable":true,"type":"string"},"offense":{"description":"Source-provided offence; null when unavailable.","nullable":true,"type":"string"},"offense_code":{"description":"Source-provided offence code; null when unavailable.","nullable":true,"type":"string"},"offense_date":{"description":"Source-provided offence date; null when unavailable.","nullable":true,"type":"string"},"offense_notes":{"description":"Source-provided offence notes; null when unavailable.","nullable":true,"type":"string"},"plea":{"description":"Source-provided plea; null when unavailable.","nullable":true,"type":"string"},"probation_months":{"description":"Source-provided probation months; null when unavailable.","nullable":true,"type":"string"},"sentence":{"description":"Source-provided sentence; null when unavailable.","nullable":true,"type":"string"},"sequence":{"description":"Source-provided charge sequence; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Source-provided charge severity; null when unavailable.","nullable":true,"type":"string"},"source_entry_id":{"description":"Source-provided source entry reference; null when unavailable.","nullable":true,"type":"string"},"statute":{"description":"Source-provided statute; null when unavailable.","nullable":true,"type":"string"},"warrant_date":{"description":"Source-provided warrant date; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailDefendant":{"properties":{"additional_fields":{"description":"Unmapped source values as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValue"},"type":"array"},"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"addresses":{"description":"Addresses on the record; arrests can carry several.","items":{"type":"string"},"type":"array"},"akas":{"description":"Also-known-as names on the record.","items":{"type":"string"},"type":"array"},"dob":{"description":"Source-provided date of birth; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided defendant name; null when unavailable.","nullable":true,"type":"string"},"sex":{"description":"Source-provided sex; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailDefendantSchema":{"properties":{"additional_fields":{"description":"Unmapped source values as label and value pairs.","items":{"$ref":"#/components/schemas/DetailLabelValueSchema"},"type":"array"},"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"addresses":{"description":"Addresses on the record; arrests can carry several.","items":{"type":"string"},"type":"array"},"akas":{"description":"Also-known-as names on the record.","items":{"type":"string"},"type":"array"},"dob":{"description":"Source-provided date of birth; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided defendant name; null when unavailable.","nullable":true,"type":"string"},"sex":{"description":"Source-provided sex; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailDocketEntry":{"properties":{"attorney":{"description":"Source-provided attorney; null when unavailable.","nullable":true,"type":"string"},"date":{"description":"Source-provided entry date; null when unavailable.","nullable":true,"type":"string"},"description":{"description":"Source-provided entry description; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"docketed_date":{"description":"Source-provided docketed date; null when unavailable.","nullable":true,"type":"string"},"document":{"description":"Source-provided document; null when unavailable.","nullable":true,"type":"string"},"entry_number":{"description":"Source-provided entry number; null when unavailable.","nullable":true,"type":"string"},"fee":{"description":"Source-provided fee; null when unavailable.","nullable":true,"type":"string"},"file_type":{"description":"Source-provided file type; null when unavailable.","nullable":true,"type":"string"},"judge":{"description":"Source-provided judge; null when unavailable.","nullable":true,"type":"string"},"location":{"description":"Source-provided location; null when unavailable.","nullable":true,"type":"string"},"misc":{"description":"Source-provided miscellaneous notes; null when unavailable.","nullable":true,"type":"string"},"party":{"description":"Source-provided party; null when unavailable.","nullable":true,"type":"string"},"party_type":{"description":"Source-provided party type; null when unavailable.","nullable":true,"type":"string"},"room":{"description":"Source-provided room; null when unavailable.","nullable":true,"type":"string"},"time":{"description":"Source-provided time; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailDocketEntrySchema":{"properties":{"attorney":{"description":"Source-provided attorney; null when unavailable.","nullable":true,"type":"string"},"date":{"description":"Source-provided entry date; null when unavailable.","nullable":true,"type":"string"},"description":{"description":"Source-provided entry description; null when unavailable.","nullable":true,"type":"string"},"disposition":{"description":"Source-provided disposition; null when unavailable.","nullable":true,"type":"string"},"docketed_date":{"description":"Source-provided docketed date; null when unavailable.","nullable":true,"type":"string"},"document":{"description":"Source-provided document; null when unavailable.","nullable":true,"type":"string"},"entry_number":{"description":"Source-provided entry number; null when unavailable.","nullable":true,"type":"string"},"fee":{"description":"Source-provided fee; null when unavailable.","nullable":true,"type":"string"},"file_type":{"description":"Source-provided file type; null when unavailable.","nullable":true,"type":"string"},"judge":{"description":"Source-provided judge; null when unavailable.","nullable":true,"type":"string"},"location":{"description":"Source-provided location; null when unavailable.","nullable":true,"type":"string"},"misc":{"description":"Source-provided miscellaneous notes; null when unavailable.","nullable":true,"type":"string"},"party":{"description":"Source-provided party; null when unavailable.","nullable":true,"type":"string"},"party_type":{"description":"Source-provided party type; null when unavailable.","nullable":true,"type":"string"},"room":{"description":"Source-provided room; null when unavailable.","nullable":true,"type":"string"},"time":{"description":"Source-provided time; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailFiling":{"properties":{"certificate_number":{"description":"Source-provided certificate number; null when unavailable.","nullable":true,"type":"string"},"court":{"description":"Source-provided court; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"Source-provided court county; null when unavailable.","nullable":true,"type":"string"},"expire_date":{"description":"Source-provided expiry date; null when unavailable.","nullable":true,"type":"string"},"file_date":{"description":"Source-provided file date; null when unavailable.","nullable":true,"type":"string"},"file_number_full":{"description":"Source-provided full file number; null when unavailable.","nullable":true,"type":"string"},"file_pages":{"description":"Source-provided file page count; null when unavailable.","nullable":true,"type":"string"},"filing_date":{"description":"Source-provided filing date; null when unavailable.","nullable":true,"type":"string"},"filing_number":{"description":"Source-provided filing number; null when unavailable.","nullable":true,"type":"string"},"filing_office":{"description":"Source-provided filing office; null when unavailable.","nullable":true,"type":"string"},"filing_office_address":{"description":"Source-provided filing office address; null when unavailable.","nullable":true,"type":"string"},"filing_state":{"description":"Source-provided filing state; null when unavailable.","nullable":true,"type":"string"},"filing_type":{"description":"Source-provided filing type; null when unavailable.","nullable":true,"type":"string"},"hidden_filing_number":{"description":"Source-provided hidden filing number; null when unavailable.","nullable":true,"type":"string"},"original_filing_number":{"description":"Source-provided original filing number; null when unavailable.","nullable":true,"type":"string"},"perfected_date":{"description":"Source-provided perfected date; null when unavailable.","nullable":true,"type":"string"},"reference_file_number":{"description":"Source-provided reference file number; null when unavailable.","nullable":true,"type":"string"},"related_file_date":{"description":"Source-provided related file date; null when unavailable.","nullable":true,"type":"string"},"release_date":{"description":"Source-provided release date; null when unavailable.","nullable":true,"type":"string"},"type_of_action":{"description":"Source-provided type of action; null when unavailable.","nullable":true,"type":"string"},"type_of_filing":{"description":"Source-provided type of filing; null when unavailable.","nullable":true,"type":"string"},"type_of_tax":{"description":"Source-provided type of tax; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailFilingSchema":{"properties":{"certificate_number":{"description":"Source-provided certificate number; null when unavailable.","nullable":true,"type":"string"},"court":{"description":"Source-provided court; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"Source-provided court county; null when unavailable.","nullable":true,"type":"string"},"expire_date":{"description":"Source-provided expiry date; null when unavailable.","nullable":true,"type":"string"},"file_date":{"description":"Source-provided file date; null when unavailable.","nullable":true,"type":"string"},"file_number_full":{"description":"Source-provided full file number; null when unavailable.","nullable":true,"type":"string"},"file_pages":{"description":"Source-provided file page count; null when unavailable.","nullable":true,"type":"string"},"filing_date":{"description":"Source-provided filing date; null when unavailable.","nullable":true,"type":"string"},"filing_number":{"description":"Source-provided filing number; null when unavailable.","nullable":true,"type":"string"},"filing_office":{"description":"Source-provided filing office; null when unavailable.","nullable":true,"type":"string"},"filing_office_address":{"description":"Source-provided filing office address; null when unavailable.","nullable":true,"type":"string"},"filing_state":{"description":"Source-provided filing state; null when unavailable.","nullable":true,"type":"string"},"filing_type":{"description":"Source-provided filing type; null when unavailable.","nullable":true,"type":"string"},"hidden_filing_number":{"description":"Source-provided hidden filing number; null when unavailable.","nullable":true,"type":"string"},"original_filing_number":{"description":"Source-provided original filing number; null when unavailable.","nullable":true,"type":"string"},"perfected_date":{"description":"Source-provided perfected date; null when unavailable.","nullable":true,"type":"string"},"reference_file_number":{"description":"Source-provided reference file number; null when unavailable.","nullable":true,"type":"string"},"related_file_date":{"description":"Source-provided related file date; null when unavailable.","nullable":true,"type":"string"},"release_date":{"description":"Source-provided release date; null when unavailable.","nullable":true,"type":"string"},"type_of_action":{"description":"Source-provided type of action; null when unavailable.","nullable":true,"type":"string"},"type_of_filing":{"description":"Source-provided type of filing; null when unavailable.","nullable":true,"type":"string"},"type_of_tax":{"description":"Source-provided type of tax; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailLabelValue":{"properties":{"label":{"description":"Display label for the source value.","type":"string"},"value":{"description":"Value paired with the label; null when unavailable.","nullable":true,"type":"string"}},"required":["label"],"type":"object"},"DetailLabelValueSchema":{"properties":{"label":{"description":"Display label for the source value.","type":"string"},"value":{"description":"Value paired with the label; null when unavailable.","nullable":true,"type":"string"}},"required":["label"],"type":"object"},"DetailLienDebtor":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"duns_number":{"description":"Source-provided DUNS number; null when unavailable.","nullable":true,"type":"string"},"fein":{"description":"Source-provided federal EIN; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided name; null when unavailable.","nullable":true,"type":"string"},"owed_amount":{"description":"Source-provided owed amount; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"suffix":{"description":"Source-provided name suffix; null when unavailable.","nullable":true,"type":"string"},"type_of_party":{"description":"Source-provided stated party type; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailLienDebtorSchema":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"duns_number":{"description":"Source-provided DUNS number; null when unavailable.","nullable":true,"type":"string"},"fein":{"description":"Source-provided federal EIN; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Source-provided name; null when unavailable.","nullable":true,"type":"string"},"owed_amount":{"description":"Source-provided owed amount; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"suffix":{"description":"Source-provided name suffix; null when unavailable.","nullable":true,"type":"string"},"type_of_party":{"description":"Source-provided stated party type; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailMeeting341":{"properties":{"date":{"description":"Source-provided meeting date; null when unavailable.","nullable":true,"type":"string"},"location":{"description":"Source-provided meeting location; null when unavailable.","nullable":true,"type":"string"},"time":{"description":"Source-provided meeting time; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailMeeting341Schema":{"properties":{"date":{"description":"Source-provided meeting date; null when unavailable.","nullable":true,"type":"string"},"location":{"description":"Source-provided meeting location; null when unavailable.","nullable":true,"type":"string"},"time":{"description":"Source-provided meeting time; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailParty":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"akas":{"description":"Also-known-as names on the party.","items":{"type":"string"},"type":"array"},"attorneys":{"description":"Attorneys the source ties to this party.","items":{"$ref":"#/components/schemas/DetailAttorney"},"type":"array"},"name":{"description":"Source-provided party name; null when unavailable.","nullable":true,"type":"string"},"phone":{"description":"Source-provided phone number; null when unavailable.","nullable":true,"type":"string"},"reported_date":{"description":"Source-provided reported date; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"sex":{"description":"Source-provided sex; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided status; null when unavailable.","nullable":true,"type":"string"},"type_of_party":{"description":"Source-provided stated party type; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailPartySchema":{"properties":{"address":{"description":"Source-provided address; null when unavailable.","nullable":true,"type":"string"},"akas":{"description":"Also-known-as names on the party.","items":{"type":"string"},"type":"array"},"attorneys":{"description":"Attorneys the source ties to this party.","items":{"$ref":"#/components/schemas/DetailAttorneySchema"},"type":"array"},"name":{"description":"Source-provided party name; null when unavailable.","nullable":true,"type":"string"},"phone":{"description":"Source-provided phone number; null when unavailable.","nullable":true,"type":"string"},"reported_date":{"description":"Source-provided reported date; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Source-provided role; null when unavailable.","nullable":true,"type":"string"},"sex":{"description":"Source-provided sex; null when unavailable.","nullable":true,"type":"string"},"status":{"description":"Source-provided status; null when unavailable.","nullable":true,"type":"string"},"type_of_party":{"description":"Source-provided stated party type; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailSource":{"properties":{"publication_date":{"description":"Source-provided publication date; null when unavailable.","nullable":true,"type":"string"},"source_document_guid":{"description":"Source-provided source document reference; null when unavailable.","nullable":true,"type":"string"},"source_name":{"description":"Source-provided source name; null when unavailable.","nullable":true,"type":"string"},"source_state":{"description":"Source-provided source state; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailSourceSchema":{"properties":{"publication_date":{"description":"Source-provided publication date; null when unavailable.","nullable":true,"type":"string"},"source_document_guid":{"description":"Source-provided source document reference; null when unavailable.","nullable":true,"type":"string"},"source_name":{"description":"Source-provided source name; null when unavailable.","nullable":true,"type":"string"},"source_state":{"description":"Source-provided source state; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"DetailsBusinessWrite":{"additionalProperties":false,"description":"The company being underwritten. Only the keys stated are written. A key left out keeps its earlier value.","properties":{"aliases":{"items":{"$ref":"#/components/schemas/CompanyAliasWrite"},"nullable":true,"type":"array"},"billing_address":{"allOf":[{"$ref":"#/components/schemas/AddressWrite"}],"nullable":true},"business_address":{"allOf":[{"$ref":"#/components/schemas/AddressWrite"}],"nullable":true},"business_phone":{"allOf":[{"$ref":"#/components/schemas/PhoneWrite"}],"nullable":true},"emails":{"items":{"$ref":"#/components/schemas/EmailWrite"},"nullable":true,"type":"array"},"heron_id":{"description":"The entity this states something about, as `GET /end_users/{id}/details` returned it. Omit it to declare something the deal does not hold yet, and the response names the entity it landed on.","nullable":true,"type":"string"},"identifiers":{"items":{"$ref":"#/components/schemas/CompanyIdWrite"},"nullable":true,"type":"array"},"name":{"allOf":[{"$ref":"#/components/schemas/LegalNameWrite"}],"nullable":true},"started_on":{"allOf":[{"$ref":"#/components/schemas/PartialDateWrite"}],"nullable":true},"state_of_incorporation":{"description":"A US state or territory name or two-letter code. Null or blank withdraws the manual value.","nullable":true,"type":"string"},"type_of_entity":{"enum":["llc","inc","corp","lp","llp","partnership","sole_proprietor","ltd","plc","co","pc","pllc","unknown",null],"nullable":true},"websites":{"items":{"$ref":"#/components/schemas/WebsiteWrite"},"nullable":true,"type":"array"}},"type":"object"},"DetailsOwnerWrite":{"additionalProperties":false,"description":"One owner of the company. Only the keys stated are written. A key left out keeps its earlier value.","properties":{"aliases":{"items":{"$ref":"#/components/schemas/PersonAliasWrite"},"nullable":true,"type":"array"},"credit_scores":{"description":"Credit scores to state for this owner. An item with `heron_id` edits that score and one without adds a score. Scores left out are unchanged; null or omitted changes none.","items":{"$ref":"#/components/schemas/CreditScoreWrite"},"nullable":true,"type":"array"},"date_of_birth":{"allOf":[{"$ref":"#/components/schemas/PartialDateWrite"}],"nullable":true},"emails":{"items":{"$ref":"#/components/schemas/EmailWrite"},"nullable":true,"type":"array"},"heron_id":{"description":"The entity this states something about, as `GET /end_users/{id}/details` returned it. Omit it to declare something the deal does not hold yet, and the response names the entity it landed on.","nullable":true,"type":"string"},"home_address":{"allOf":[{"$ref":"#/components/schemas/AddressWrite"}],"nullable":true},"home_phone":{"allOf":[{"$ref":"#/components/schemas/PhoneWrite"}],"nullable":true},"mobile_phone":{"allOf":[{"$ref":"#/components/schemas/PhoneWrite"}],"nullable":true},"name":{"allOf":[{"$ref":"#/components/schemas/PersonNameWrite"}],"nullable":true},"national_ids":{"items":{"$ref":"#/components/schemas/NationalIdWrite"},"nullable":true,"type":"array"},"ownership_percentage":{"description":"The share stated, out of 100.","maximum":100.0,"minimum":0.0,"nullable":true,"type":"number"}},"type":"object"},"DetailsWriteSchema":{"additionalProperties":false,"description":"The company and owner details to state for this deal. The response is the same body `GET` returns, so a caller can read back the result of the write.","properties":{"business":{"allOf":[{"$ref":"#/components/schemas/DetailsBusinessWrite"}],"nullable":true},"owners":{"items":{"$ref":"#/components/schemas/DetailsOwnerWrite"},"type":"array"}},"type":"object"},"DocketEntry":{"properties":{"date_filed":{"description":"Date the entry was filed; null when unavailable.","format":"date","nullable":true,"type":"string"},"description":{"description":"The entry text as the court recorded it.","nullable":true,"type":"string"},"entry_number":{"description":"The entry's number on the docket.","nullable":true,"type":"string"},"source":{"description":"The source that stated this.","type":"string"}},"type":"object"},"DriversLicenceFrontResultSchema":{"properties":{"address_city":{"nullable":true,"type":"string"},"address_line_1":{"nullable":true,"type":"string"},"address_state":{"nullable":true,"type":"string"},"address_zip":{"nullable":true,"type":"string"},"date_of_birth":{"format":"date","nullable":true,"type":"string"},"document_number":{"nullable":true,"type":"string"},"expiration_date":{"format":"date","nullable":true,"type":"string"},"first_name":{"nullable":true,"type":"string"},"issuing_date":{"format":"date","nullable":true,"type":"string"},"issuing_state":{"nullable":true,"type":"string"},"last_name":{"nullable":true,"type":"string"},"middle_name":{"nullable":true,"type":"string"}},"type":"object"},"DuplicateEndUser":{"properties":{"created":{"description":"When the duplicate end user was created","example":"2026-09-29T22:12:38.097920","format":"date-time","type":"string"},"end_user_heron_id":{"description":"Heron ID of the duplicate end user","example":"eus_abc123","type":"string"},"name":{"description":"Name of the duplicate end user","example":"Acme Corp","nullable":true,"type":"string"}},"required":["created","end_user_heron_id"],"type":"object"},"DuplicateEndUsersResponse":{"properties":{"duplicates":{"description":"List of duplicate end users with their heron IDs, names, and created dates","items":{"$ref":"#/components/schemas/DuplicateEndUser"},"type":"array"}},"required":["duplicates"],"type":"object"},"EmailTemplatePatchSchema":{"additionalProperties":true,"properties":{"cc_address":{"description":"The email address to CC","nullable":true,"type":"string"},"heron_id":{"description":"Unique identifier for the email template","readOnly":true,"type":"string"},"html_body":{"description":"The body of the email to send.","type":"string"},"name":{"description":"Unique name of the email template. Used to match which email template to send. Only alphanumeric characters, underscores, and dashes are allowed.","maxLength":50,"minLength":3,"pattern":"^[a-zA-Z0-9_-]+$","type":"string"},"reply_to_address":{"description":"The email address to reply to","nullable":true,"type":"string"},"to_address":{"description":"The email address to send the email to","nullable":true,"type":"string"}},"type":"object"},"EmailTemplateSchema":{"additionalProperties":true,"properties":{"cc_address":{"description":"The email address to CC","nullable":true,"type":"string"},"heron_id":{"description":"Unique identifier for the email template","readOnly":true,"type":"string"},"html_body":{"description":"The body of the email to send.","type":"string"},"name":{"description":"Unique name of the email template. Used to match which email template to send. Only alphanumeric characters, underscores, and dashes are allowed.","maxLength":50,"minLength":3,"pattern":"^[a-zA-Z0-9_-]+$","type":"string"},"reply_to_address":{"description":"The email address to reply to","nullable":true,"type":"string"},"to_address":{"description":"The email address to send the email to","nullable":true,"type":"string"}},"required":["html_body","name"],"type":"object"},"EmailWrite":{"additionalProperties":false,"properties":{"email_address":{"description":"The address as the source states it.","type":"string"}},"type":"object"},"EndUser":{"properties":{"confidence":{"description":"Aggregated confidence for the end user across all transactions; between 0 and 1","example":0.42,"readOnly":true,"type":"number"},"created":{"description":"When the end user was created in Heron system","example":"2026-08-25T22:12:38.069117","format":"date-time","readOnly":true,"type":"string"},"criteria":{"description":"List of scorecard metrics","items":{"$ref":"#/components/schemas/Metric"},"readOnly":true,"type":"array"},"data_sources":{"description":"List of data source summaries for the end user","items":{"$ref":"#/components/schemas/DataSource"},"readOnly":true,"type":"array"},"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"type":"boolean"},"last_processed_at":{"description":"When the end user was last successfully processed in Heron system","example":"2026-10-06T22:12:38.069529","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the end user was last updated in Heron system","example":"2026-10-06T22:12:38.069178","format":"date-time","readOnly":true,"type":"string"},"meta":{"additionalProperties":{"type":"string"},"description":"Arbitrary key-value metadata. Max 20 keys, key \u226464 chars, value \u2264256 chars, total \u22644KB. Example: {\"attribution_key\": \"lender_42\"}","nullable":true,"type":"object"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"},"profit_and_loss_layout":{"nullable":true},"status":{"description":"Status of end user; 'ready' triggers async processing, 'review_requested' triggers manual review request","enum":["new","ready","processed","reviewed","review_requested","failed"],"example":"ready","type":"string"},"tags":{"description":"Tags currently applied to this end user, read-only. Absent unless the endpoint returns them.","items":{"$ref":"#/components/schemas/TagSchema"},"readOnly":true,"type":"array"}},"required":["end_user_id"],"type":"object"},"EndUser1":{"properties":{"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"}},"required":["end_user_id"],"type":"object"},"EndUser2":{"properties":{"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"}},"type":"object"},"EndUserAccountBalance":{"properties":{"account_id":{"description":"Account associated with balance","type":"string"},"account_info":{"$ref":"#/components/schemas/EndUserAccountInfo"},"balance":{"description":"Balance amount","type":"number"},"balance_converted":{"description":"Converted balance amount in target currency","type":"number"},"currency":{"description":"ISO 4217 currency code for balance","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"currency_converted":{"description":"Conversion currency code. ISO 4217 currency code for balance","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"display_account_id":{"description":"Human-readable account label for display: the last four digits of the account number (falling back to the account name). Not unique and not a key; use account_id to join.","example":"7505","nullable":true,"type":"string"},"is_computed":{"description":"Whether the balance has been imputed using forward fill","type":"boolean"},"is_latest":{"description":"Whether the date is the latest non-imputed balance for the account","type":"boolean"},"timestamp":{"description":"Timestamp of the latest transaction","format":"date-time","type":"string"}},"type":"object"},"EndUserAccountBalanceForecast":{"properties":{"account_id":{"type":"string"},"balances":{"items":{"$ref":"#/components/schemas/EndUserBalanceForecast"},"type":"array"},"currency":{"type":"string"}},"type":"object"},"EndUserAccountInfo":{"properties":{"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"heron_id":{"description":"Heron ID of the data source account","example":"dsa_APAp8zVPsKhriJVsgEdt9t","type":"string"},"institution_name":{"description":"Name of the institution","example":"Chase","type":"string"},"name":{"description":"Name of the account","example":"Checking Account","type":"string"},"number":{"description":"Number of the account","example":"123456789","type":"string"},"owner_name":{"description":"Name of the account owner","example":"John Doe","type":"string"},"type":{"description":"Type of the account","example":"Checking","type":"string"}},"type":"object"},"EndUserAddressLocationSchema":{"properties":{"company_physical_address":{"allOf":[{"$ref":"#/components/schemas/AddressLocation"}],"nullable":true}},"type":"object"},"EndUserBalanceForecast":{"properties":{"date":{"description":"Forecast date at specified date granularity","example":"2026-10-06","type":"string"},"predicted":{"description":"Predicted converted balance","example":42.42,"type":"number"},"predicted_lower":{"description":"Predict amount lower bound","example":4.24,"type":"number"},"predicted_upper":{"description":"Predicted amount upper bound","example":420.42,"type":"number"}},"type":"object"},"EndUserBalanceInputParams":{"properties":{"account_ids":{"default":[],"description":"Filter by specific account reference IDs","example":["1234","5678"],"items":{"type":"string"},"type":"array"},"date_max":{"description":"Filter for transactions with date earlier than the input value (inclusive). It has precedence over timestamp_max","example":"2026-10-05","format":"date","nullable":true,"type":"string"},"date_min":{"description":"Filter for transactions with timestamp after the input value (inclusive). It has precedence over timestamp_min","example":"2026-10-06","format":"date","nullable":true,"type":"string"},"end_user_heron_id":{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"},"end_user_id":{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","example":"your_end_user_id","nullable":true,"type":"string"},"include_forecast":{"default":false,"description":"If true, forecasts the balances of each account","type":"boolean"},"timestamp_max":{"description":"Deprecated (use date_max instead). Filter for transactions with timestamp earlier than the input value","example":"2026-10-05T22:12:43.426938","format":"date-time","nullable":true,"type":"string"},"timestamp_min":{"description":"Deprecated (use date_min instead). Filter for transactions with timestamp after the input value","example":"2026-10-06T22:12:43.426737","format":"date-time","nullable":true,"type":"string"},"to_currency":{"description":"ISO 4217 currency code to convert to","enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"}},"type":"object"},"EndUserBalanceOutputSchema":{"properties":{"daily_balances":{"items":{"$ref":"#/components/schemas/EndUserDailyBalance"},"type":"array"},"forecasted":{"items":{"$ref":"#/components/schemas/EndUserAccountBalanceForecast"},"type":"array"},"summary":{"$ref":"#/components/schemas/EndUserDailyBalance"},"warnings":{"description":"Empty-balance reason codes. Populated responses return an empty list.","items":{"enum":["no_transactions_present","transactions_present_but_not_enriched","transactions_enriched_but_no_balance_data"],"type":"string"},"type":"array"}},"type":"object"},"EndUserBankStatementSummary":{"properties":{"all_transactions_summary":{"allOf":[{"$ref":"#/components/schemas/EndUserBankStatementSummaryContent"}],"description":"The same summary over every loaded transaction, month-to-date statements included, where the fields above narrow to bank-statement files. Bank connections and other non-file sources are in both, so a deal with no files reports the same figures twice. Grouped the same way as the request asked for. When the end user does not load unreconciled transactions the two views are identical, and this mirrors the summary.","nullable":true},"average":{"$ref":"#/components/schemas/BankStatementSummaryRow"},"by_data_source_account_heron_id":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by data source account. Keys are heron ids of the data source account","type":"object"},"by_month":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by month (only populated when grouping is calendar_month))","type":"object"},"by_month_by_account":{"additionalProperties":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"type":"object"},"description":"Summary of bank statement by month and account id. Keys are the start date of the month and account ids, which may span multiple data source accounts","type":"object"},"by_month_by_data_source_account_heron_id":{"additionalProperties":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"type":"object"},"description":"Summary of bank statement by month and data source account. Keys are the start date of the month and heron ids of the data source account","type":"object"},"grouping":{"description":"Describes how the report was grouped. It supports either by calendar month or rolling 30-day period","readOnly":true,"type":"string"},"rolling_30_days_from_last_txn":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by rolling 30 days (only populated when grouping is rolling_30_days). Keys are the start date of the 30-day period using latest transaction date date as the end date","type":"object"},"rolling_30_days_from_today":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by rolling 30 days (only populated when grouping is rolling_30_days_from_today). Keys are the start date of the 30-day period using today as the end date","type":"object"},"total":{"$ref":"#/components/schemas/BankStatementSummaryRow"}},"required":["grouping"],"type":"object"},"EndUserBankStatementSummaryContent":{"properties":{"average":{"$ref":"#/components/schemas/BankStatementSummaryRow"},"by_data_source_account_heron_id":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by data source account. Keys are heron ids of the data source account","type":"object"},"by_month":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by month (only populated when grouping is calendar_month))","type":"object"},"by_month_by_account":{"additionalProperties":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"type":"object"},"description":"Summary of bank statement by month and account id. Keys are the start date of the month and account ids, which may span multiple data source accounts","type":"object"},"by_month_by_data_source_account_heron_id":{"additionalProperties":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"type":"object"},"description":"Summary of bank statement by month and data source account. Keys are the start date of the month and heron ids of the data source account","type":"object"},"grouping":{"description":"Describes how the report was grouped. It supports either by calendar month or rolling 30-day period","readOnly":true,"type":"string"},"rolling_30_days_from_last_txn":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by rolling 30 days (only populated when grouping is rolling_30_days). Keys are the start date of the 30-day period using latest transaction date date as the end date","type":"object"},"rolling_30_days_from_today":{"additionalProperties":{"allOf":[{"$ref":"#/components/schemas/BankStatementSummaryRow"}],"nullable":true},"description":"Summary of bank statement by rolling 30 days (only populated when grouping is rolling_30_days_from_today). Keys are the start date of the 30-day period using today as the end date","type":"object"},"total":{"$ref":"#/components/schemas/BankStatementSummaryRow"}},"required":["grouping"],"type":"object"},"EndUserBankStatementSummaryParams":{"properties":{"account_ids":{"description":"Account ids to include in the summary, if not provided, all accounts are included","items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"grouping":{"default":"by_month","description":"Determines how to group transactions. It supports calendar month (by_month) or rolling 30-day period (from last txns with rolling_30_days_from_last_txn or from today with rolling_30_days_from_today)","enum":["by_month","by_data_source_account_heron_id","rolling_30_days_from_last_txn","rolling_30_days_from_today","by_month_by_data_source_account_heron_id","by_month_by_account","by_data_source_account_by_monthly_intervals"],"type":"string"},"num_full_calendar_months":{"description":"Number of full calendar months to show in the summary","minimum":1,"nullable":true,"type":"integer"}},"type":"object"},"EndUserBulkCategoryFeedback":{"properties":{"category":{"$ref":"#/components/schemas/CategoryFeedback"},"source":{"description":"your identifier for where the feedback comes from e.g. bob_the_underwriter","maxLength":120,"nullable":true,"type":"string"},"transaction_heron_ids":{"default":[],"description":"List of transaction heron IDs","items":{"example":"txn_TimbrmobT7zjcSbZDGoAYF","type":"string"},"type":"array"},"transaction_reference_ids":{"default":[],"description":"List of transaction reference IDs","items":{"example":"your_reference_id","type":"string"},"type":"array"}},"required":["category"],"type":"object"},"EndUserBulkCategoryFeedbackParams":{"properties":{"high_priority":{"default":false,"description":"Whether to process the feedback with high priority","type":"boolean"}},"type":"object"},"EndUserBulkMerchantFeedback":{"properties":{"merchant":{"$ref":"#/components/schemas/MerchantFeedback1"},"transaction_heron_ids":{"description":"List of transaction heron IDs","items":{"example":"txn_QmNNvcxXMNQMsFAiDmyfHN","type":"string"},"type":"array"}},"required":["merchant","transaction_heron_ids"],"type":"object"},"EndUserDailyBalance":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/EndUserAccountBalance"},"type":"array"},"accounts_not_converted":{"items":{"$ref":"#/components/schemas/EndUserAccountBalance"},"type":"array"},"balance":{"description":"Balance amount","type":"number"},"currency":{"description":"ISO 4217 currency code for balance","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"date":{"description":"Date of balance","format":"date","type":"string"}},"type":"object"},"EndUserDataSource":{"properties":{"created":{"description":"When the data source was created in Heron system","example":"2026-08-25T22:12:38.036033","format":"date-time","type":"string"},"data_source_accounts":{"description":"List of data source accounts associated with the data source","example":[{"account_id":"202348","anomaly_reasons":["Statement metadata changed","Manual review flagged suspicious edits"],"anomaly_score":200,"enabled":true,"max_date":"2022-01-31","min_date":"2022-01-01","num_transactions":120,"transactions_match_balances":true}],"items":{"$ref":"#/components/schemas/DataSourceAccount"},"type":"array"},"heron_id":{"description":"Unique ID for data source generated by Heron","example":"dso_Vc8d68ryZqEC32aXmMBANo","readOnly":true,"type":"string"},"is_enabled":{"default":true,"description":"Whether or not the data source is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"},"last_updated":{"description":"When the data source was last updated in Heron system","example":"2026-10-06T22:12:38.036058","format":"date-time","type":"string"},"metadata":{"allOf":[{"$ref":"#/components/schemas/DataSourceMetadata"}],"description":"Metadata associated with the data source","example":{"filename":"202348_JAN_2022.pdf","status":"processed"}},"reference_id":{"description":"Unique ID to identify the data source","example":"pdf_Jd9c47DoR994TNvQStoVHn","type":"string"},"status":{"description":"Status of the data source entity, where applicable (e.g. pdfs, integration links)","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded","pending","active","syncing","erroring","sync_disabled","deleted_in_plaid","unknown"],"example":"new","type":"string"},"type":{"description":"Data source type","enum":["api","csv","pdf","integration_link","legacy","legacy_pdf","legacy_integration_link"],"example":"pdf","type":"string"}},"required":["created","data_source_accounts","heron_id","last_updated","reference_id","type"],"type":"object"},"EndUserDataSourceAccount":{"properties":{"account_id":{"description":"PDF statement account identifier. Null for non-PDF sources.","example":"202348","nullable":true,"type":"string"},"anomaly_reasons":{"description":"Reasons associated with anomaly_score for pdf bank statement account sources","example":["Statement metadata changed","Manual review flagged suspicious edits"],"items":{"type":"string"},"nullable":true,"type":"array"},"anomaly_score":{"description":"For pdf bank statement account sources, where the value is between 0 and 1000, with 1000 being the most anomalous","example":200,"type":"integer"},"balances":{"description":"List of balances associated with the account","example":[{"closing_amount":25000.45,"currency":"USD","date":"2022-01-01"}],"items":{"$ref":"#/components/schemas/AccountBalance"},"type":"array"},"currency":{"description":"Currency of the account","example":"USD","type":"string"},"dba":{"description":"Doing Business As name printed on the bank statement","example":"Chickys","nullable":true,"type":"string"},"display_account_id":{"description":"Human-readable account label for display: the last four digits of the account number (falling back to the account title). Not unique and not a key; join heron_id to data_source_account_heron_id on transactions.","example":"7505","nullable":true,"type":"string"},"end_date":{"description":"End date of the account","example":"2022-01-31","format":"date","type":"string"},"heron_id":{"description":"Unique ID for data source generated by Heron","example":"dso_e9oWAjsmyUkhrxbT9aaVZj","type":"string"},"institution_name":{"description":"Name of the institution","example":"Chase","type":"string"},"is_enabled":{"description":"Whether or not the account is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"},"max_date":{"description":"Latest date of transactions associated with the data source account","example":"2022-01-31","format":"date","type":"string"},"min_date":{"description":"Earliest date of transactions associated with the data source account","example":"2022-01-01","format":"date","type":"string"},"name":{"description":"Name of the account","example":"Checking Account","type":"string"},"num_transactions":{"description":"Number of transactions associated with the data source account","example":120,"type":"integer"},"number":{"description":"Number of the account","example":"123456789","type":"string"},"owner_name":{"description":"Name of the account owner","example":"John Doe","type":"string"},"reference_id":{"description":"This is the account ID provided as part of the transaction","example":"account-202348","type":"string"},"start_date":{"description":"Start date of the account","example":"2022-01-01","format":"date","type":"string"},"transactions_match_balances":{"description":"For pdf bank statements, represents whether all transactions extracted match the balances extracted","example":true,"type":"boolean"},"type":{"description":"Type of the account","example":"Checking","type":"string"}},"required":["is_enabled"],"type":"object"},"EndUserDataSourceAccountDisableDuplicatesSchema":{"properties":{"end_date":{"format":"date","nullable":true,"type":"string"},"start_date":{"format":"date","nullable":true,"type":"string"}},"type":"object"},"EndUserDataSourceAccountSummarySchema":{"properties":{"grouping":{"default":"by_data_source_account_heron_id","enum":["by_data_source_account_heron_id","by_data_source_account_by_monthly_intervals"],"type":"string"}},"type":"object"},"EndUserDataSourceAccountUpdateSchema":{"properties":{"is_enabled":{"description":"Whether or not the account is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"}},"type":"object"},"EndUserDataSourceMetadata":{"properties":{"currency":{"description":"Currency associated with the data source entity, where applicable (e.g. pdfs)","example":"USD","type":"string"},"filename":{"description":"Name of the file uploaded, where applicable (e.g. pdfs)","example":"202348_JAN_2022.pdf","type":"string"},"integration_heron_id":{"description":"Unique Heron ID associated with an integration","example":"itg_L8sTb2F4X7qH2KF2pqUZw2","type":"string"},"integration_item_id":{"description":"Unique item id associated with integration link data sources","example":"Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr","type":"string"},"last_successful_sync":{"description":"Last successful sync date associated with integration link data sources","example":"2026-10-06T22:12:38.035359","format":"date-time","type":"string"},"notes":{"description":"Notes associated with the data source entity, where applicable (e.g. pdfs)","example":"error with processing, 52 invalid transaction(s) extracted from statement","type":"string"},"parsing_version":{"description":"Parsing version associated with the data source entity, where applicable (e.g. pdfs)","example":"1.0.0","type":"string"},"sub_type":{"description":"Sub type of the data source entity, where applicable (e.g. integration links)","example":"transaction","type":"string"}},"type":"object"},"EndUserDataSourceSummaries":{"properties":{"status":{"description":"Status of the data source entity, where applicable (e.g. pdfs, integration links)","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded","pending","active","syncing","erroring","sync_disabled","deleted_in_plaid","unknown"],"example":"new","type":"string"},"type":{"description":"Data source type","enum":["api","csv","pdf","integration_link","legacy","legacy_pdf","legacy_integration_link"],"example":"pdf","type":"string"}},"required":["type"],"type":"object"},"EndUserDataSourceSummarySchema":{"properties":{"all_reconciled":{"nullable":true,"type":"boolean"},"anomaly_reasons":{"items":{"type":"string"},"nullable":true,"type":"array"},"created":{"description":"When the data source was created in Heron system","example":"2026-08-25T22:12:38.036033","format":"date-time","type":"string"},"data_source_accounts":{"description":"List of data source accounts associated with the data source","example":[{"account_id":"202348","anomaly_reasons":["Statement metadata changed","Manual review flagged suspicious edits"],"anomaly_score":200,"enabled":true,"max_date":"2022-01-31","min_date":"2022-01-01","num_transactions":120,"transactions_match_balances":true}],"items":{"$ref":"#/components/schemas/EndUserDataSourceAccount"},"type":"array"},"end_user_file_heron_id":{"nullable":true,"type":"string"},"end_user_file_reference_id":{"nullable":true,"type":"string"},"file_class":{"description":"File class for PDF sources, such as `bank_statement` or `month_to_date`. Null for non-PDF sources.","nullable":true,"type":"string"},"filename":{"nullable":true,"type":"string"},"has_unexplained_edits":{"nullable":true,"type":"boolean"},"heron_id":{"description":"Unique ID for data source generated by Heron","example":"dso_Vc8d68ryZqEC32aXmMBANo","readOnly":true,"type":"string"},"is_enabled":{"default":true,"description":"Whether or not the data source is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"},"last_updated":{"description":"When the data source was last updated in Heron system","example":"2026-10-06T22:12:38.036058","format":"date-time","type":"string"},"max_anomaly_score":{"nullable":true,"type":"integer"},"max_date":{"format":"date","nullable":true,"type":"string"},"metadata":{"allOf":[{"$ref":"#/components/schemas/EndUserDataSourceMetadata"}],"description":"Metadata associated with the data source","example":{"filename":"202348_JAN_2022.pdf","status":"processed"}},"min_date":{"format":"date","nullable":true,"type":"string"},"num_extracted_transactions":{"nullable":true,"type":"integer"},"num_statements":{"nullable":true,"type":"integer"},"num_transactions":{"type":"integer"},"reconciliation_method":{"description":"How the reconciliation verdict was set: `start_and_end_balance`, `running_balance`, `summary_derived`, `total_debits_credits`, or `zero_balances` for ladder checks; `human` for a reviewer. Null means no method decided the verdict, including when nothing could be checked or when the reconciliation status is null.","enum":["start_and_end_balance","summary_derived","running_balance","total_debits_credits","zero_balances","human",null],"nullable":true},"reconciliation_status":{"description":"Stored reconciliation verdict. `reconciled` means a ladder check passed or a reviewer confirmed the document. `not_possible` means nothing available could verify it. `failed` means a ladder check failed or a reviewer ruled it unreconciled. Null means neither the ladder nor a reviewer set a verdict.","enum":["failed","not_possible","reconciled",null],"nullable":true,"type":"string"},"reference_id":{"nullable":true,"type":"string"},"status":{"nullable":true,"type":"string"},"type":{"description":"Data source type","enum":["api","csv","pdf","integration_link","legacy","legacy_pdf","legacy_integration_link"],"example":"pdf","type":"string"}},"required":["all_reconciled","anomaly_reasons","created","data_source_accounts","end_user_file_heron_id","end_user_file_reference_id","file_class","filename","has_unexplained_edits","heron_id","last_updated","max_anomaly_score","max_date","min_date","num_extracted_transactions","num_statements","num_transactions","reconciliation_method","reconciliation_status","reference_id","status","type"],"type":"object"},"EndUserDataSourceUpdateSchema":{"properties":{"is_enabled":{"default":true,"description":"Whether or not the data source is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"}},"type":"object"},"EndUserDataSources":{"properties":{"created":{"description":"When the data source was created in Heron system","example":"2026-08-25T22:12:38.036033","format":"date-time","type":"string"},"data_source_accounts":{"description":"List of data source accounts associated with the data source","example":[{"account_id":"202348","anomaly_reasons":["Statement metadata changed","Manual review flagged suspicious edits"],"anomaly_score":200,"enabled":true,"max_date":"2022-01-31","min_date":"2022-01-01","num_transactions":120,"transactions_match_balances":true}],"items":{"$ref":"#/components/schemas/EndUserDataSourceAccount"},"type":"array"},"heron_id":{"description":"Unique ID for data source generated by Heron","example":"dso_Vc8d68ryZqEC32aXmMBANo","readOnly":true,"type":"string"},"is_enabled":{"default":true,"description":"Whether or not the data source is enabled. If disabled, hides related transactions from analytics","example":true,"type":"boolean"},"last_updated":{"description":"When the data source was last updated in Heron system","example":"2026-10-06T22:12:38.036058","format":"date-time","type":"string"},"metadata":{"allOf":[{"$ref":"#/components/schemas/EndUserDataSourceMetadata"}],"description":"Metadata associated with the data source","example":{"filename":"202348_JAN_2022.pdf","status":"processed"}},"reference_id":{"description":"Unique ID to identify the data source","example":"pdf_Jd9c47DoR994TNvQStoVHn","type":"string"},"status":{"description":"Status of the data source entity, where applicable (e.g. pdfs, integration links)","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded","pending","active","syncing","erroring","sync_disabled","deleted_in_plaid","unknown"],"example":"new","type":"string"},"type":{"description":"Data source type","enum":["api","csv","pdf","integration_link","legacy","legacy_pdf","legacy_integration_link"],"example":"pdf","type":"string"}},"required":["created","data_source_accounts","heron_id","last_updated","reference_id","type"],"type":"object"},"EndUserDetailsResponseSchema":{"description":"Everything the deal's sources found about who the applicant is, with one value for each field and the source it was taken from. When the sources give different values, the value from the highest-ranked source is shown, and the other values are not in this response. Dates use YYYY-MM-DD and amounts are decimal strings.","properties":{"affiliates":{"description":"Everyone linked to the applicant or to an owner who is neither of them, in name order. Never the company being underwritten and never a declared owner, which are `business` and `owners`, and never someone only a record names, who is in that record's `relationships`.","items":{"$ref":"#/components/schemas/ResolvedAffiliate"},"type":"array"},"arrests":{"description":"Most recent first.","items":{"$ref":"#/components/schemas/ResolvedArrest"},"type":"array"},"bankruptcies":{"description":"Newest filing first.","items":{"$ref":"#/components/schemas/ResolvedBankruptcy"},"type":"array"},"business":{"allOf":[{"$ref":"#/components/schemas/ResolvedBusiness"}],"description":"The company being underwritten. Null when no source identified one, which happens on a deal with no application form and no company search.","nullable":true},"corporate_filings":{"description":"Newest incorporation first.","items":{"$ref":"#/components/schemas/ResolvedCorporateFiling"},"type":"array"},"criminal_cases":{"description":"Newest filing first.","items":{"$ref":"#/components/schemas/ResolvedCriminalCase"},"type":"array"},"custom_entities":{"additionalProperties":{},"description":"The fields defined outside the standardised ones, keyed by entity name. A single entity is one object and a list entity is a list of row objects. Each object carries the attribute names as keys with one value each, and `_sources` names the source type each value was taken from. An attribute no source stated is null and absent from `_sources`. Empty when no custom entity is defined.","type":"object"},"lawsuits":{"description":"Newest filing first.","items":{"$ref":"#/components/schemas/ResolvedLawsuit"},"type":"array"},"liens":{"description":"Newest filing first.","items":{"$ref":"#/components/schemas/ResolvedLienJudgment"},"type":"array"},"owners":{"description":"The owners an application form declared, best attested first, so a reader with room for two sees the two that matter. Empty when no form declared one.","items":{"$ref":"#/components/schemas/ResolvedOwner"},"type":"array"},"tax_id_verifications":{"description":"Every identifier an authority was asked to check, with the name it was checked against and the answer, in identifier order.","items":{"$ref":"#/components/schemas/ResolvedTaxIdVerification"},"type":"array"}},"required":["affiliates","arrests","bankruptcies","business","corporate_filings","criminal_cases","custom_entities","lawsuits","liens","owners","tax_id_verifications"],"type":"object"},"EndUserEmail":{"properties":{"cc_addresses":{"items":{"type":"string"},"type":"array"},"date_sent":{"format":"date-time","type":"string"},"date_sent_string":{"type":"string"},"from_address":{"type":"string"},"from_address_domain":{"type":"string"},"from_name":{"type":"string"},"html_body":{"type":"string"},"html_or_text_body":{"type":"string"},"reply_to":{"nullable":true,"type":"string"},"subject":{"type":"string"},"text_body":{"type":"string"},"to_addresses":{"items":{"type":"string"},"type":"array"}},"type":"object"},"EndUserEmailSchema":{"properties":{"cc_addresses":{"items":{"type":"string"},"type":"array"},"created":{"format":"date-time","type":"string"},"date_sent":{"format":"date-time","type":"string"},"date_sent_string":{"type":"string"},"from_address":{"type":"string"},"from_address_domain":{"type":"string"},"from_name":{"type":"string"},"heron_id":{"type":"string"},"html_body":{"type":"string"},"html_or_text_body":{"type":"string"},"is_reply":{"type":"boolean"},"processing_status":{"enum":["new","processing","processed","failed"],"type":"string"},"reply_to":{"nullable":true,"type":"string"},"subject":{"type":"string"},"subject_cleaned":{"type":"string"},"text_body":{"type":"string"},"to_addresses":{"items":{"type":"string"},"type":"array"},"viewer_url":{"description":"a temporary, secure URL for viewing the email contents","type":"string"}},"type":"object"},"EndUserEndUserFile":{"properties":{"file_class":{"nullable":true,"type":"string"},"filename":{"type":"string"},"heron_id":{"type":"string"},"renamed_filename":{"type":"string"}},"type":"object"},"EndUserEnrichParams":{"properties":{"priority":{"default":"normal","description":"Priority for async enrichment","enum":["normal","high"],"type":"string"}},"type":"object"},"EndUserEntitiesSettings":{"properties":{"date_display_format":{"description":"The format to use for date attributes when they are display in the dashboard","type":"string"}},"type":"object"},"EndUserEntityAttributeSchema":{"properties":{"attribute_description":{"type":"string"},"attribute_name":{"type":"string"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"display_order":{"type":"integer"},"heron_id":{"type":"string"},"is_dedupe_key":{"default":false,"type":"boolean"},"reconciliation_config":{"additionalProperties":{},"type":"object"},"reconciliation_strategy":{"enum":["sort_order","llm","comparison","concatenate_lists"]}},"type":"object"},"EndUserEntityAttributeSource":{"properties":{"heron_id":{"nullable":true,"type":"string"},"sort_order":{"type":"integer"},"source_config":{"additionalProperties":{},"type":"object"},"source_type":{"enum":["parsed_end_user_file","api","rel_6","end_user_enricher","company_attribute","static_value","end_user_query","broker_submission_api","crm"]}},"type":"object"},"EndUserEntityAttributeSourceSchema":{"properties":{"heron_id":{"nullable":true,"type":"string"},"sort_order":{"type":"integer"},"source_config":{"additionalProperties":{},"type":"object"},"source_type":{"enum":["parsed_end_user_file","api","rel_6","end_user_enricher","company_attribute","static_value","end_user_query","broker_submission_api","crm"]}},"type":"object"},"EndUserEntityAttributeValueSchema":{"properties":{"heron_id":{"type":"string"},"value":{}},"type":"object"},"EndUserEntitySchema":{"properties":{"display_order":{"type":"integer"},"entity_description":{"type":"string"},"entity_name":{"type":"string"},"entity_post_processor_configs":{"default":[],"items":{"additionalProperties":{},"type":"object"},"type":"array"},"heron_id":{"type":"string"},"is_list":{"type":"boolean"},"saved_query_heron_id":{"nullable":true,"type":"string"}},"type":"object"},"EndUserFileBase64Schema":{"properties":{"file_b64":{"type":"string"},"mime_type":{"type":"string"}},"type":"object"},"EndUserFilePageClasses":{"properties":{"confidence":{"default":1.0,"type":"number"},"file_class":{"type":"string"}},"type":"object"},"EndUserFileSchema":{"properties":{"bank_statement":{"allOf":[{"$ref":"#/components/schemas/PdfGet"}],"example":null,"nullable":true,"readOnly":true},"created":{"format":"date-time","type":"string"},"email":{"allOf":[{"$ref":"#/components/schemas/EndUserEmailSchema"}],"example":null,"nullable":true,"readOnly":true},"file_class":{"type":"string"},"file_source_metadata":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"filename":{"type":"string"},"heron_id":{"type":"string"},"iso_application":{"allOf":[{"$ref":"#/components/schemas/GetIsoApplication"}],"nullable":true,"readOnly":true},"num_pages":{"type":"integer"},"page_classes":{"additionalProperties":{"$ref":"#/components/schemas/EndUserFilePageClasses"},"nullable":true,"type":"object"},"parent_heron_id":{"nullable":true,"type":"string"},"parsed_results":{"default":[],"items":{"$ref":"#/components/schemas/ParsedEndUserFile"},"readOnly":true,"type":"array"},"processing_error":{"nullable":true,"readOnly":true,"type":"string"},"reference_id":{"type":"string"},"renamed_filename":{"type":"string"}},"type":"object"},"EndUserFileSummarySchema":{"properties":{"bank_statement":{"allOf":[{"$ref":"#/components/schemas/PdfGet"}],"example":null,"nullable":true,"readOnly":true},"created":{"format":"date-time","type":"string"},"file_class":{"type":"string"},"file_source_metadata":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"filename":{"type":"string"},"heron_id":{"type":"string"},"is_non_actionable_email":{"type":"boolean"},"iso_application":{"allOf":[{"$ref":"#/components/schemas/GetIsoApplication"}],"nullable":true,"readOnly":true},"latest_parsed_at":{"format":"date-time","nullable":true,"type":"string"},"num_pages":{"type":"integer"},"page_classes":{"additionalProperties":{"$ref":"#/components/schemas/EndUserFilePageClasses"},"nullable":true,"type":"object"},"parent_heron_id":{"nullable":true,"type":"string"},"parse_status":{"enum":["classifying","parsing","parsed","failed","awaiting","processed"],"type":"string"},"processing_error":{"nullable":true,"readOnly":true,"type":"string"},"reference_id":{"type":"string"},"renamed_filename":{"type":"string"},"validation_counts":{"$ref":"#/components/schemas/EndUserFileValidationCounts"}},"required":["is_non_actionable_email","parse_status","validation_counts"],"type":"object"},"EndUserFileUpdateSchema":{"properties":{"file_class":{"type":"string"},"page_classes":{"additionalProperties":{"$ref":"#/components/schemas/EndUserFilePageClasses"},"nullable":true,"type":"object"},"parent_heron_id":{"nullable":true,"type":"string"},"reference_id":{"type":"string"}},"type":"object"},"EndUserFileUploadSchema":{"properties":{"file_base64":{"description":"Base64 encoded file bytes","type":"string"},"file_class":{"description":"The type of file, e.g., bank_statement","nullable":true,"type":"string"},"filename":{"description":"Name of file","type":"string"},"parent_file_heron_id":{"description":"The Heron ID of the parent file, if this file is a part of another file","nullable":true,"type":"string"},"reference_id":{"description":"Your reference id for file","nullable":true,"type":"string"},"trigger_downstream_processing":{"default":true,"description":"Whether to trigger downstream processing (file classification, parsing, etc.) upon upload","type":"boolean"}},"required":["file_base64","filename"],"type":"object"},"EndUserFileValidationCounts":{"properties":{"failed":{"type":"integer"},"not_applicable":{"type":"integer"},"passed":{"type":"integer"}},"required":["failed","not_applicable","passed"],"type":"object"},"EndUserForecastInputParams":{"properties":{"category_heron_id":{"description":"Heron ID of category to be forecasted; either category_heron_id or category_label must be present","example":"ctg_6d8eAhqjGvc8kTZi7p2hfE","type":"string"},"category_label":{"description":"Label of category to be forecasted; either category_heron_id or category_label must be present","example":"Revenue","type":"string"},"date_granularity":{"default":"month","description":"Aggregate results over time, i.e., aggregate by week or by month","enum":["week","month"],"example":"month","type":"string"},"end_user_heron_id":{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"},"end_user_id":{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","example":"your_end_user_id","nullable":true,"type":"string"},"from_date":{"description":"The earliest transaction timestamp date to use in forecasting","example":"2022-01-01","format":"date","nullable":true,"type":"string"},"to_currency":{"description":"ISO 4217 currency code to convert to","enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"},"to_date":{"description":"The latest transaction timestamp date to use in forecasting","example":"2022-01-31","format":"date","nullable":true,"type":"string"}},"type":"object"},"EndUserForecastOutputSchema":{"properties":{"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"date":{"description":"Forecast date at specified date granularity","example":"2026-10-06","type":"string"},"predicted":{"description":"Predicted amount","example":42.42,"type":"number"},"predicted_lower":{"description":"Predict amount lower bound","example":4.24,"type":"number"},"predicted_upper":{"description":"Predicted amount upper bound","example":420.42,"type":"number"}},"type":"object"},"EndUserGroupedTransactionsReport":{"properties":{"counterparty":{"type":"string"},"merchant":{"$ref":"#/components/schemas/GroupedTransactionMerchant"},"transaction_groups":{"items":{"$ref":"#/components/schemas/EndUserTransactionGroup"},"type":"array"}},"type":"object"},"EndUserInformationPatchSchema":{"properties":{"amount_requested":{"nullable":true,"type":"number"},"annual_revenue":{"nullable":true,"type":"number"},"business_start_date":{"format":"date","nullable":true,"type":"string"},"company_billing_address":{"$ref":"#/components/schemas/Address"},"company_email":{"nullable":true,"type":"string"},"company_legal_business_name":{"nullable":true,"type":"string"},"company_phone_number":{"nullable":true,"type":"string"},"company_physical_address":{"$ref":"#/components/schemas/Address"},"company_website":{"nullable":true,"type":"string"},"dba":{"description":"Doing business as","nullable":true,"type":"string"},"federal_tax_id":{"nullable":true,"type":"string"},"industry_type":{"nullable":true,"type":"string"},"loan_purpose":{"nullable":true,"type":"string"},"monthly_revenue":{"nullable":true,"type":"number"},"naics":{"nullable":true,"type":"string"},"owner_1":{"$ref":"#/components/schemas/Owner"},"owner_2":{"$ref":"#/components/schemas/Owner"},"predicted_industry_probability":{"nullable":true,"type":"number"},"source_email_address":{"nullable":true,"type":"string"},"source_name":{"nullable":true,"type":"string"},"source_notes":{"nullable":true,"type":"string"},"state_of_incorporation":{"nullable":true,"type":"string"},"type_of_business_entity":{"nullable":true,"type":"string"}},"type":"object"},"EndUserInformationSchema":{"properties":{"amount_requested":{"nullable":true,"type":"number"},"annual_revenue":{"nullable":true,"type":"number"},"business_start_date":{"format":"date","nullable":true,"type":"string"},"company_billing_address":{"$ref":"#/components/schemas/Address"},"company_email":{"nullable":true,"type":"string"},"company_legal_business_name":{"nullable":true,"type":"string"},"company_phone_number":{"nullable":true,"type":"string"},"company_physical_address":{"$ref":"#/components/schemas/Address"},"company_website":{"nullable":true,"type":"string"},"dba":{"description":"Doing business as","nullable":true,"type":"string"},"federal_tax_id":{"nullable":true,"type":"string"},"industry_type":{"nullable":true,"type":"string"},"loan_purpose":{"nullable":true,"type":"string"},"monthly_revenue":{"nullable":true,"type":"number"},"naics":{"nullable":true,"type":"string"},"owner_1":{"$ref":"#/components/schemas/Owner"},"owner_2":{"$ref":"#/components/schemas/Owner"},"predicted_industry_probability":{"nullable":true,"type":"number"},"source_email_address":{"nullable":true,"type":"string"},"source_name":{"nullable":true,"type":"string"},"source_notes":{"nullable":true,"type":"string"},"source_type":{"description":"Source of the end user information","enum":["api","iso_application_form","heron_industry_classifier","rel6_industry_classifier","email","end_user_entities"],"example":"iso_application_form","type":"string"},"state_of_incorporation":{"nullable":true,"type":"string"},"type_of_business_entity":{"nullable":true,"type":"string"}},"type":"object"},"EndUserList":{"properties":{"confidence":{"description":"Aggregated confidence for the end user across all transactions; between 0 and 1","example":0.42,"readOnly":true,"type":"number"},"created":{"description":"When the end user was created in Heron system","example":"2026-08-25T22:12:38.069117","format":"date-time","readOnly":true,"type":"string"},"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"type":"boolean"},"last_processed_at":{"description":"When the end user was last successfully processed in Heron system","example":"2026-10-06T22:12:38.069529","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the end user was last updated in Heron system","example":"2026-10-06T22:12:38.069178","format":"date-time","readOnly":true,"type":"string"},"meta":{"additionalProperties":{"type":"string"},"description":"Arbitrary key-value metadata. Max 20 keys, key \u226464 chars, value \u2264256 chars, total \u22644KB. Example: {\"attribution_key\": \"lender_42\"}","nullable":true,"type":"object"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"},"profit_and_loss_layout":{"nullable":true},"status":{"description":"Status of end user; 'ready' triggers async processing, 'review_requested' triggers manual review request","enum":["new","ready","processed","reviewed","review_requested","failed"],"example":"ready","type":"string"},"tags":{"description":"Tags currently applied to this end user, read-only. Absent unless the endpoint returns them.","items":{"$ref":"#/components/schemas/TagSchema"},"readOnly":true,"type":"array"}},"required":["end_user_id"],"type":"object"},"EndUserMerchantFeedbackRevert":{"properties":{"transaction_heron_ids":{"description":"List of transaction heron IDs to revert merchant feedback","items":{"example":"txn_CaiSHAZwKpU6abJQwHv3hU","type":"string"},"type":"array"}},"required":["transaction_heron_ids"],"type":"object"},"EndUserMerchantSummary":{"properties":{"by_merchant_summary":{"items":{"$ref":"#/components/schemas/MerchantSummaryRow"},"type":"array"}},"type":"object"},"EndUserMerchantSummaryParams":{"properties":{"account_ids":{"description":"Account ids to include in the summary, if not provided, all accounts are included","items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"analytics_group":{"items":{"description":"The category analytics group","enum":["revenue","cost_of_goods_sold","operational_expenses","tax_expenses","intra_company","debt","equity","other_income","special_items","other",null],"example":"debt","nullable":true,"type":"string"},"minItems":1,"nullable":true,"type":"array"},"category_label_or_heron_id":{"items":{"type":"string"},"minItems":1,"nullable":true,"type":"array"},"group_by_counterparty_txn_clusters":{"default":false,"description":"Whether to group by counterparty transaction clusters","type":"boolean"}},"type":"object"},"EndUserPositions":{"properties":{"llm_summary":{"nullable":true,"type":"string"},"positions":{"items":{"$ref":"#/components/schemas/PositionSummary"},"type":"array"},"total_holdback_percentage":{"description":"Current positions' expected monthly repayments divided by average monthly true revenue, as a percentage","nullable":true,"type":"number"}},"type":"object"},"EndUserPositionsParams":{"properties":{"account_ids":{"description":"Account IDs to filter positions by","items":{"type":"string"},"nullable":true,"type":"array"},"include_transactions":{"default":false,"description":"If true, include investment/repayment/reversal transactions on each position","type":"boolean"}},"type":"object"},"EndUserPostParams":{"properties":{"confidence":{"description":"Aggregated confidence for the end user across all transactions; between 0 and 1","example":0.42,"readOnly":true,"type":"number"},"created":{"description":"When the end user was created in Heron system","example":"2026-08-25T22:12:38.069117","format":"date-time","readOnly":true,"type":"string"},"criteria":{"description":"List of scorecard metrics","items":{"$ref":"#/components/schemas/Metric"},"readOnly":true,"type":"array"},"data_sources":{"description":"List of data source summaries for the end user","items":{"$ref":"#/components/schemas/DataSource"},"readOnly":true,"type":"array"},"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"type":"boolean"},"last_processed_at":{"description":"When the end user was last successfully processed in Heron system","example":"2026-10-06T22:12:38.069529","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the end user was last updated in Heron system","example":"2026-10-06T22:12:38.069178","format":"date-time","readOnly":true,"type":"string"},"meta":{"additionalProperties":{"type":"string"},"description":"Arbitrary key-value metadata. Max 20 keys, key \u226464 chars, value \u2264256 chars, total \u22644KB. Example: {\"attribution_key\": \"lender_42\"}","nullable":true,"type":"object"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"},"profit_and_loss_layout":{"nullable":true},"tags":{"description":"Optional tag Heron IDs to apply when creating the end user.","items":{"type":"string"},"type":"array","writeOnly":true}},"required":["end_user_id"],"type":"object"},"EndUserProcessingStatusSchema":{"properties":{"status":{"description":"Current processing status of the end user","enum":["processing","processed"],"example":"processed"}},"required":["status"],"type":"object"},"EndUserReadEnrichedParams":{"properties":{"account_ids":{"description":"Account ids to include. If not provided, all accounts are included","items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"category_heron_id":{"default":[],"description":"Filter by the heron_id of the category that the transaction is annotated with","example":"ctg_LujAEExcf35NNtC8UDmxEL","items":{"type":"string"},"nullable":true,"type":"array"},"data_source_heron_id":{"description":"Filter by data source Heron ID","type":"string"},"last_updated_min":{"description":"Filter for transactions whose values were last updated in Heron systems after the specified input value, isoformat","example":"2026-10-06T22:12:38.080306","format":"date-time","nullable":true,"type":"string"},"order_by":{"default":"id_asc","description":"What to order transactions by","enum":["amount_asc","amount_desc","abs_amount_asc","abs_amount_desc","description_asc","description_desc","timestamp_asc","timestamp_desc","id_asc","id_desc","confidence_asc","confidence_desc","created_asc","created_desc"],"type":"string"},"page":{"default":1,"description":"Results page","minimum":1,"type":"integer"},"per_page":{"default":100,"description":"Desired results per page","maximum":50000,"minimum":1,"type":"integer"}},"type":"object"},"EndUserReadParams":{"properties":{"created_after":{"description":"Return only end users created at or after this ISO 8601 date or datetime","example":"2026-09-11","nullable":true,"type":"string"},"created_before":{"description":"Return only end users created strictly before this ISO 8601 date or datetime","example":"2026-09-18","nullable":true,"type":"string"},"criteria":{"additionalProperties":{},"description":"Information about the end user that can be used as rules for underwriting","example":{"history_days":{"value":40}},"nullable":true,"readOnly":true,"type":"object"},"end_user_id":{"description":"Filter by ID associated with end_user_id field in transactions","example":"your_end_user_id","nullable":true,"type":"string"},"heron_id":{"description":"Unique ID generated by Heron","example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"},"include_data_sources":{"default":false,"description":"Whether the to include data sources for each end user","example":true,"type":"boolean"},"include_scorecard_metrics":{"default":false,"description":"Whether to include scorecard metrics for each end user (under field criteria)","example":true,"type":"boolean"},"include_tags":{"default":false,"description":"Whether to include the tags applied to each end user","example":true,"type":"boolean"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"nullable":true,"type":"boolean"},"last_updated_after":{"description":"Return only end users last updated at or after this ISO 8601 date or datetime","example":"2026-09-11","nullable":true,"type":"string"},"last_updated_before":{"description":"Return only end users last updated strictly before this ISO 8601 date or datetime","example":"2026-09-18","nullable":true,"type":"string"},"limit":{"default":1000,"description":"Pagination limit per page","maximum":10000,"minimum":1,"type":"integer"},"name":{"description":"Filter by name associated with end user","example":"your_end_user_name","nullable":true,"type":"string"},"order_by":{"default":"last_updated_desc","description":"Order to return end users by","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc",null],"nullable":true,"type":"string"},"page":{"default":1,"description":"Pagination page number","minimum":1,"type":"integer"},"status":{"description":"Filter by status of end user","enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"},"tags":{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","items":{"type":"string"},"nullable":true,"type":"array"}},"type":"object"},"EndUserReadSummaryParams":{"properties":{"criteria":{"additionalProperties":{},"description":"Information about the end user that can be used as rules for underwriting","example":{"history_days":{"value":40}},"nullable":true,"readOnly":true,"type":"object"},"end_user_id":{"description":"Filter by ID associated with end_user_id field in transactions","example":"your_end_user_id","nullable":true,"type":"string"},"heron_id":{"description":"Unique ID generated by Heron","example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"},"in_human_review":{"description":"Filter by whether an active document is pending human review","nullable":true,"type":"boolean"},"include_submitting_brokers":{"default":false,"description":"Whether to include the brokers who submitted each end user","example":true,"type":"boolean"},"include_tags":{"default":false,"description":"Whether to include the tags applied to each end user","example":true,"type":"boolean"},"include_updates_in_interval":{"default":false,"description":"When true, interval_start and interval_end match end users created or last updated within the window. Bounds are inclusive only when this flag is true.","type":"boolean"},"interval_end":{"format":"date-time","nullable":true,"type":"string"},"interval_start":{"format":"date-time","nullable":true,"type":"string"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"nullable":true,"type":"boolean"},"limit":{"description":"Pagination limit per page (optional). If provided, 'page' must also be provided.","maximum":10000,"minimum":1,"nullable":true,"type":"integer"},"name":{"description":"Filter by name associated with end user","example":"your_end_user_name","nullable":true,"type":"string"},"order_by":{"default":"last_updated_desc","description":"Order to return end users by","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc",null],"nullable":true,"type":"string"},"page":{"description":"Pagination page number (optional). If provided, 'limit' must also be provided.","minimum":1,"nullable":true,"type":"integer"},"status":{"description":"Filter by status of end user","enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"},"tags":{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","items":{"type":"string"},"nullable":true,"type":"array"},"with_crm_sync_result":{"enum":["success","failure","no_sync_attempted",null],"nullable":true},"with_policy_result":{"description":"Only end users whose policy result was this.","enum":["passed","failed","review_required","missing_data","execution_error",null],"nullable":true}},"type":"object"},"EndUserRecurringTransaction":{"properties":{"amount":{"$ref":"#/components/schemas/Money"},"category_confidence":{"type":"number"},"category_heron_id":{"type":"string"},"category_label":{"type":"string"},"counterparty":{"type":"string"},"description":{"type":"string"},"heron_id":{"type":"string"},"merchant_group_id":{"type":"string"},"merchant_heron_id":{"type":"string"},"merchant_name":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}},"required":["amount","heron_id","timestamp"],"type":"object"},"EndUserRecurringTransactionsReport":{"properties":{"avg_amount":{"$ref":"#/components/schemas/Money"},"avg_confidence":{"type":"number"},"counterparty":{"type":"string"},"frequency":{"enum":["not_enough_data","same_day","irregular","daily","weekly","biweekly","monthly","quarterly","annually","weekday","twice_weekly"],"type":"string"},"merchant_group_id":{"type":"string"},"merchant_heron_id":{"type":"string"},"merchant_name":{"type":"string"},"transactions":{"items":{"$ref":"#/components/schemas/EndUserRecurringTransaction"},"type":"array"}},"type":"object"},"EndUserRecurringTransactionsReportParams":{"properties":{"account_ids":{"description":"Account ids to include in the report, if not provided, all accounts are included","items":{"example":"1234","type":"string"},"nullable":true,"type":"array"}},"type":"object"},"EndUserStatsInputParams":{"properties":{"account_ids":{"default":[],"description":"Filter by specific account reference IDs","example":["1234","5678"],"items":{"type":"string"},"type":"array"},"category_heron_ids":{"default":[],"description":"Filter by specific categories","example":["ctg_QVcasN4jVfEev5ze2jEorM","ctg_2hUVn2tvUtWXbCnQpct4cX"],"items":{"type":"string"},"type":"array"},"date_granularity":{"default":"month","description":"Aggregate results over time, e.g., by week or by quarter","enum":["day","week","month","quarter","year"],"example":"month","type":"string"},"end_user_heron_id":{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"},"end_user_id":{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","example":"your_end_user_id","nullable":true,"type":"string"},"from_date":{"description":"Filter for transactions with timestamp after the input value (as date)","example":"2026-10-06","format":"date","nullable":true,"type":"string"},"group_by":{"default":"category","description":"Pivot results by merchant or by category","enum":["category","merchant"],"example":"category","type":"string"},"merchant_heron_ids":{"default":[],"description":"Filter by specific merchants","example":["mrc_9p7irgocSX7rmykPQDp8VY","mrc_XqLvRrVfUFevHQPUSA9HB7"],"items":{"type":"string"},"type":"array"},"to_currency":{"description":"ISO 4217 currency code to convert to","enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"},"to_date":{"description":"Filter for transactions with timestamp before the input value (as date)","example":"2026-10-05","format":"date","nullable":true,"type":"string"}},"type":"object"},"EndUserStatsOutputMetrics":{"properties":{"inflow":{"allOf":[{"$ref":"#/components/schemas/EndUserStatsOutputMetricsInstance"}],"description":"Metrics only counting inflows"},"net":{"allOf":[{"$ref":"#/components/schemas/EndUserStatsOutputMetricsInstance"}],"description":"Net metrics"},"outflow":{"allOf":[{"$ref":"#/components/schemas/EndUserStatsOutputMetricsInstance"}],"description":"Metrics only counting outflows"}},"type":"object"},"EndUserStatsOutputMetricsInstance":{"properties":{"amount":{"description":"Aggregate amount of transactions","example":42.42,"type":"number"},"avg_amount":{"description":"Average value of transactions","example":1.01,"type":"number"},"n":{"description":"Number of transactions","example":42,"type":"integer"}},"type":"object"},"EndUserStatsOutputSchema":{"properties":{"currency":{"description":"ISO 4217 currency code","example":"USD","nullable":true,"type":"string"},"dt":{"description":"Date, impacted by input date granularity","example":"2026-10-06","type":"string"},"heron_id":{"description":"Heron ID of either merchant or category, depending on what was specified in group_by","example":"mrc_6ELMxX6ZubBNX5dWxoDQBG","type":"string"},"label":{"description":"Label of either merchant or category, depending on what was specified in group_by","example":"Revenue","type":"string"},"metrics":{"$ref":"#/components/schemas/EndUserStatsOutputMetrics"}},"type":"object"},"EndUserSummary":{"properties":{"confidence":{"description":"Aggregated confidence for the end user across all transactions; between 0 and 1","example":0.42,"readOnly":true,"type":"number"},"created":{"description":"When the end user was created in Heron system","example":"2026-08-25T22:12:38.069117","format":"date-time","readOnly":true,"type":"string"},"criteria":{"description":"List of scorecard metrics","items":{"$ref":"#/components/schemas/Metric"},"readOnly":true,"type":"array"},"crm_sync_result":{"allOf":[{"$ref":"#/components/schemas/CrmSyncEvent"}],"nullable":true},"data_sources":{"description":"List of data source summaries for the end user","items":{"$ref":"#/components/schemas/DataSource"},"readOnly":true,"type":"array"},"end_user_id":{"description":"id defined by user; links to the end_user_id for transactions","example":"970d3647-04c4-4245-b794-d7546632a476","maxLength":140,"minLength":1,"type":"string"},"files":{"items":{"$ref":"#/components/schemas/EndUserEndUserFile"},"type":"array"},"heron_id":{"description":"Unique id for end user generated by Heron","example":"eus_KzeHoRvTC3x8TkWESYoCcM","readOnly":true,"type":"string"},"in_human_review":{"description":"Whether an active document is pending human review","readOnly":true,"type":"boolean"},"is_portfolio":{"description":"Whether the end user is part of a lending portfolio","example":true,"type":"boolean"},"last_processed_at":{"description":"When the end user was last successfully processed in Heron system","example":"2026-10-06T22:12:38.069529","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the end user was last updated in Heron system","example":"2026-10-06T22:12:38.069178","format":"date-time","readOnly":true,"type":"string"},"name":{"description":"Name of end user; may help to improve categorisation accuracy","example":"Company Name Inc.","maxLength":128,"nullable":true,"type":"string"},"policy_evaluation_results":{"description":"One entry per use_case, carrying the latest evaluation's policy identity and result","items":{"$ref":"#/components/schemas/PolicyEvaluationResult"},"type":"array"},"policy_evaluations":{"items":{"enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"type":"array"},"profit_and_loss_layout":{"nullable":true},"status":{"description":"Status of end user; 'ready' triggers async processing, 'review_requested' triggers manual review request","enum":["new","ready","processed","reviewed","review_requested","failed"],"example":"ready","type":"string"},"submitting_brokers":{"description":"Brokers who submitted this deal \u2014 the discriminator between same-named merchants. Absent unless include_submitting_brokers is requested.","items":{"$ref":"#/components/schemas/SubmittingBroker"},"readOnly":true,"type":"array"},"tags":{"description":"Tags currently applied to this end user, read-only. Absent unless the endpoint returns them.","items":{"$ref":"#/components/schemas/TagSchema"},"readOnly":true,"type":"array"}},"required":["end_user_id"],"type":"object"},"EndUserTagsSchema":{"properties":{"tags":{"description":"Heron IDs of the tags to apply to this end user.","items":{"type":"string"},"type":"array"}},"required":["tags"],"type":"object"},"EndUserTransactionDataCoverageFilters":{"properties":{"end_date":{"format":"date","type":"string"},"include_disabled_data_sources":{"default":true,"type":"boolean"},"start_date":{"format":"date","type":"string"}},"required":["end_date","start_date"],"type":"object"},"EndUserTransactionDataCoverageSchema":{"properties":{"by_account":{"additionalProperties":{"items":{"$ref":"#/components/schemas/AccountTransactionDataCoverage"},"type":"array"},"type":"object"},"duplicate_data_source_accounts_by_account":{"additionalProperties":{"example":["dsa_P4dmcwKBDqLnwowsaBnngm"],"items":{"type":"string"},"type":"array"},"nullable":true,"type":"object"},"end_user_heron_id":{"readOnly":true},"reconciliation_by_account":{"additionalProperties":{"$ref":"#/components/schemas/AccountDataSourcesReconciliation"},"type":"object"}},"required":["by_account","end_user_heron_id","reconciliation_by_account"],"type":"object"},"EndUserTransactionGroup":{"properties":{"frequency":{"enum":["not_enough_data","same_day","irregular","daily","weekly","biweekly","monthly","quarterly","annually","weekday","twice_weekly"],"type":"string"},"transactions":{"items":{"$ref":"#/components/schemas/GroupedTransaction"},"type":"array"}},"type":"object"},"EndUserTransactionPostAsync":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories_default":{"description":"Category of transaction that you may have received from other sources","example":"shopping","nullable":true,"type":"string","writeOnly":true},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"type":"string"},"date":{"description":"The date of the transaction; 'timestamp' field takes priority over 'date'","example":"2020-04-27","format":"date","nullable":true,"type":"string","writeOnly":true},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["account_id","amount","currency","description","reference_id"],"type":"object"},"EndUserTransactionsPostAsyncSchema":{"properties":{"balances":{"description":"Bank account balance information for a particular account_id. The balance here must be the *latest balance* after all the transactions in this batch have been applied.","items":{"$ref":"#/components/schemas/AccountBalance1"},"nullable":true,"type":"array"},"transactions":{"items":{"$ref":"#/components/schemas/EndUserTransactionPostAsync"},"minItems":1,"type":"array"}},"required":["transactions"],"type":"object"},"EndUserWebhookData":{"properties":{"end_user_id":{"description":"Customer-supplied id for the end user","example":"myenduser","type":"string"},"heron_id":{"description":"Heron ID of the end user","example":"eus_Eqio3Y4dhyNiMphrXwG58p","type":"string"},"status":{"description":"Status of the end user (e.g. 'processed', 'reviewed')","example":"processed","type":"string"}},"type":"object"},"EndUserWebhookPayload":{"properties":{"created":{"description":"When the webhook was fired","format":"date-time","type":"string"},"data":{"allOf":[{"$ref":"#/components/schemas/EndUserWebhookData"}],"description":"End user details"},"meta":{"additionalProperties":{},"description":"Customer-provided metadata from the end user, if any","nullable":true,"type":"object"},"topic":{"description":"Webhook topic, e.g. `end_user.processed`","type":"string"}},"type":"object"},"EnhancedSQLCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"check_type":{"enum":["equal","not_equal","greater_than","greater_than_or_equal","less_than","less_than_or_equal","before","before_or_on","after","after_or_on","is_in","is_not_in"]},"column_name":{"type":"string"},"comparison_value":{},"data_type":{"enum":["numeric","date","string"]},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"query_name":{"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true}},"required":["check_type","column_name","comparison_value","data_type","query_name"],"type":"object"},"EnrichAddressesSchema":{"properties":{"city":{"type":"string"},"state":{"type":"string"},"street":{"type":"string"},"zip":{"type":"string"}},"type":"object"},"EnrichedAddressSchema":{"properties":{"analysis":{"$ref":"#/components/schemas/Analysis"},"candidate_index":{"type":"integer"},"components":{"$ref":"#/components/schemas/Components"},"delivery_line_1":{"type":"string"},"delivery_point_barcode":{"type":"string"},"input_index":{"type":"integer"},"last_line":{"type":"string"},"metadata":{"$ref":"#/components/schemas/Metadata"}},"required":["analysis","candidate_index","components","delivery_line_1","delivery_point_barcode","input_index","last_line","metadata"],"type":"object"},"EnricherFieldsSchema":{"properties":{"enricher_type":{"type":"string"},"fields":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"}},"type":"object"},"EnricherResultSchema":{"properties":{"enriched_at":{"format":"date-time","type":"string"},"enricher_name":{"type":"string"},"result":{"additionalProperties":{},"type":"object"},"status":{"enum":["succeeded","failed","processing","missing_input_data"],"type":"string"}},"required":["enriched_at","enricher_name","status"],"type":"object"},"EvaluatedBranch":{"properties":{"condition_unavailable":{"description":"True when the branch's condition uses an attribute or check that no longer exists, so it can't be evaluated: the deal stopped here without knowing whether it matched, none of its checks ran, and the section is missing data","readOnly":true},"heron_id":{"description":"Stable across renames, so route or compare on this rather than the name","readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"}},"type":"object"},"FeatureSettings":{"properties":{"acknowledge_submission_emails":{"type":"boolean"},"auto_dsa_deduplication_enabled":{"type":"boolean"},"auto_iso_app_parsing_enabled":{"type":"boolean"},"auto_sync_to_crm":{"type":"boolean"},"background_check_affiliations":{"type":"boolean"},"bank_statement_human_review_enabled":{"type":"boolean"},"bank_statement_summary":{"$ref":"#/components/schemas/BankStatementSummarySettings"},"broker_alert_on_failed_funder_submission":{"type":"boolean"},"broker_decision_name_match_window_days":{"maximum":90,"minimum":1,"type":"integer"},"broker_failed_funder_submission_alert_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"broker_submission_dedupe_window_days":{"maximum":90,"minimum":1,"nullable":true,"type":"integer"},"broker_submission_email_cc_deal_owner":{"type":"boolean"},"broker_submission_use_generated_files_as_iso_app":{"description":"Dashboard-triggered funder submissions attach the deal's latest generated_file as the ISO application instead of the uploaded application files, matching the SubmitToFunders node's use_generated_files_as_iso_app input. Set for brokers whose workflow generates the application but leaves submission to the dashboard.","type":"boolean"},"broker_velocity_signal":{"allOf":[{"$ref":"#/components/schemas/BrokerVelocitySignal"}],"description":"Per-customer distinct-domain cut-offs for the broker_velocity fraud enricher's low/medium/high signal."},"broker_waterfall_alert_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"broker_waterfall_min_decline_percentage":{"maximum":100,"minimum":1,"nullable":true,"type":"integer"},"categorisation_beta":{"$ref":"#/components/schemas/CategorisationBeta"},"count_duplicate_end_users":{"type":"boolean"},"crm_sync_end_users_without_end_user_information":{"type":"boolean"},"crm_sync_n8n_workflow_url":{"nullable":true,"type":"string"},"crm_sync_n8n_workflow_urls":{"items":{"type":"string"},"nullable":true,"type":"array"},"custom_merchant_groups_auto_approve":{"type":"boolean"},"custom_merchant_groups_enabled":{"type":"boolean"},"custom_merchant_groups_to_override":{"items":{"type":"string"},"type":"array"},"daily_crm_sync_report_emails":{"items":{"format":"email","type":"string"},"type":"array"},"decision_engine":{"$ref":"#/components/schemas/DecisionEngineSettings"},"default_regular_debt_summary":{"type":"boolean"},"description_masked":{"type":"boolean"},"end_user_created_alert_slack_channel":{"nullable":true,"type":"string"},"evaluate_policies_only_in_flowmingo":{"type":"boolean"},"failed_iso_email_forwarding_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"file_classifier_fallback_model_registry_slug":{"nullable":true,"type":"string"},"file_classifier_model_registry_slug":{"nullable":true,"type":"string"},"financials_alerting_enabled":{"type":"boolean"},"financials_enabled":{"type":"boolean"},"flowmingo_workflow_owners":{"$ref":"#/components/schemas/FlowmingoWorkflowOwners"},"forward_failed_emails":{"type":"boolean"},"forward_rejected_emails":{"type":"boolean"},"fraud_network_scanning":{"type":"boolean"},"grouped_recurring_transactions_enabled":{"type":"boolean"},"has_end_user_in_description":{"type":"boolean"},"has_matching_transaction":{"type":"boolean"},"heron_score":{"type":"boolean"},"heron_score_min_category_confidence":{"maximum":1.0,"minimum":0.0,"type":"number"},"identify_positions":{"type":"boolean"},"incident_reprocess_opt_out":{"type":"boolean"},"is_insurance_demo":{"type":"boolean"},"is_potential_duplicate":{"type":"boolean"},"is_recurring":{"type":"boolean"},"iso_app_parser_version":{"type":"string"},"iso_app_parsing":{"type":"boolean"},"kyb_ui_demo":{"type":"boolean"},"kyb_verification":{"type":"boolean"},"lookup_crm_id_in_email_body":{"type":"boolean"},"mcp_apps_widgets":{"type":"boolean"},"merchant":{"type":"boolean"},"openai_file_classifier_model_slug":{"nullable":true,"type":"string"},"path_to_spreadsheet_export_template":{"nullable":true,"type":"string"},"policy_auto_decline":{"type":"boolean"},"policy_auto_pdf_parsing":{"type":"boolean"},"policy_auto_pdf_parsing_sequential":{"type":"boolean"},"policy_stop_if_iso_app_not_fully_matched":{"type":"boolean"},"predict_naics":{"type":"boolean"},"read_from_entity_graph":{"type":"boolean"},"rejected_iso_email_forwarding_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"reply_to_rejected_emails":{"type":"boolean"},"report_bank_statement_summary_num_calendar_months_to_show":{"nullable":true,"type":"integer"},"report_bank_statement_summary_use_location_specific_months":{"type":"boolean"},"require_attachments_in_submissions":{"type":"boolean"},"resolve_owners_across_iso_applications":{"type":"boolean"},"restrict_end_user_access_by_tag":{"description":"Permission gate: when on, a dashboard member can only see end users sharing one of the tags assigned to them in Stytch. Members with no tags assigned, API keys, and legacy credentials stay unrestricted.","type":"boolean"},"send_email_after_failed_policy_workflow_reason":{"additionalProperties":{},"type":"object"},"show_background_check":{"type":"boolean"},"show_debt_candidates_table":{"type":"boolean"},"skip_send_email_after_failed_crm_sync_cron":{"type":"boolean"},"skip_trial_end_user_alerts":{"type":"boolean"},"small_file_filtering_enabled":{"type":"boolean"},"spreadsheet_export_date_columns":{"description":"List of query result columns to export as spreadsheet dates. If null, query values are unchanged.","items":{"type":"string"},"nullable":true,"type":"array"},"spreadsheet_export_eusql_queries":{"description":"List of end user SQL query names to include in spreadsheet export. If null, all queries are exported. If empty list, no queries are exported.","items":{"type":"string"},"nullable":true,"type":"array"},"spreadsheet_export_exclude_hardcoded_sheets":{"description":"List of hardcoded sheet names to exclude from spreadsheet export. If null, no sheets are excluded. Only applies to hardcoded sheets, not query sheets.","items":{"type":"string"},"nullable":true,"type":"array"},"store_entity_graph":{"type":"boolean"},"submission_finish_event_loopback_days":{"maximum":30,"minimum":0,"type":"integer"},"submission_finish_event_status":{"type":"boolean"},"sync_to_crm_after_failed_policy_workflow_reason":{"additionalProperties":{},"type":"object"},"temporal_workflow_as_policy_workflow":{"type":"boolean"},"temporal_workflow_enabled":{"type":"boolean"},"webhook_event_created_timestamp":{"type":"boolean"},"webhook_retry_backoffs":{"items":{"maximum":86400,"minimum":60,"type":"integer"},"type":"array"}},"type":"object"},"FieldCheck":{"properties":{"chosen_by":{"description":"The source `value` was taken from: the first this field prefers that stated anything. Not the source the others are read against, which `source_to_verify` names. Null when nothing stated the field.","enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application",null],"nullable":true},"label":{"description":"The field as a reader reads it, such as `Legal business name`.","type":"string"},"source_to_verify":{"description":"The source that is being verified.","enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application",null],"nullable":true},"sources":{"description":"One line per source, in the order this field prefers them.","items":{"$ref":"#/components/schemas/SourceVerification"},"type":"array"},"state":{"description":"`verified` when a source independent of the deal confirms what it claimed, `conflict` when any source contradicts it, the deal's own other channels included. `not_verified` means nothing independent confirmed it: nothing else spoke to the claim, or only another channel of the deal restated it, or the deal claimed nothing to check. `blank` means nobody stated a value at all.","enum":["verified","conflict","not_verified","blank"]},"value":{"description":"The best answer the sources hold: the value of the first one this field prefers that stated anything. Not what the deal claimed, which `state` reports on instead, so a field can show a registry's value and read `conflict`. Null when no source stated the field.","nullable":true,"type":"string"}},"type":"object"},"FieldValidation":{"properties":{"failure_reason":{"nullable":true,"type":"string"},"field_name":{"type":"string"},"result":{"enum":["pass","fail","not_applicable"],"example":"pass","type":"string"},"validation_type":{"type":"string"}},"required":["failure_reason","field_name","result","validation_type"],"type":"object"},"FileClass":{"properties":{"description":{"example":"File Class Description","type":"string"},"name":{"example":"File Class Name","type":"string"}},"required":["name"],"type":"object"},"FileClassSchema":{"properties":{"description":{"nullable":true,"type":"string"},"display_group":{"nullable":true,"type":"string"},"display_name":{"nullable":true,"type":"string"},"group":{"nullable":true,"type":"string"},"name":{"type":"string"}},"required":["name"],"type":"object"},"FileSettings":{"properties":{"combined_file_classification_enable_automatic_splitting":{"type":"boolean"},"combined_file_classification_enabled":{"type":"boolean"},"combined_file_classification_keywords":{"items":{"type":"string"},"type":"array"},"combined_file_classification_num_pages_threshold":{"type":"integer"},"combined_file_classification_treat_excel_files_as_combined":{"type":"boolean"},"disable_automatic_parsing":{"description":"a list of file classes to disable automatic parsing for.","items":{"type":"string"},"type":"array"},"file_class_parsers_map":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"gcs_import_classifies_files":{"type":"boolean"},"human_in_the_loop":{"additionalProperties":{"$ref":"#/components/schemas/HumanInTheLoopParserConfig"},"description":"Configuration for human review per parser. Keys are parser_ids.","type":"object"},"llm_classification_trim_pdf_pages":{"type":"boolean"},"reject_duplicates":{"type":"boolean"},"reject_duplicates_based_on_text":{"type":"boolean"},"required_file_classes":{"items":{"type":"string"},"type":"array"},"total_allowed_files_to_process":{"nullable":true,"type":"integer"}},"type":"object"},"FinancialsSummarySchema":{"properties":{"by_category":{"items":{"$ref":"#/components/schemas/FinancialsValue"},"type":"array"},"by_sub_category":{"items":{"$ref":"#/components/schemas/FinancialsValue"},"type":"array"},"currency":{"type":"string"},"grouping":{"enum":["by_month","by_quarter","by_year"],"type":"string"},"metrics":{"items":{"$ref":"#/components/schemas/FinancialsValue"},"type":"array"}},"type":"object"},"FinancialsValue":{"properties":{"label":{"type":"string"},"time_period_label":{"type":"string"},"value":{"type":"number"}},"type":"object"},"FinicityRequestCashflowReportSchema":{"properties":{"applicant_is_personal_guarantor":{"type":"boolean"},"for_cra_purpose":{"type":"boolean"},"user_type":{"enum":["personal","business"],"type":"string"}},"required":["applicant_is_personal_guarantor","for_cra_purpose","user_type"],"type":"object"},"FinicityRequestStatementReportsSchema":{"properties":{"max_statement_index":{"default":24,"type":"integer"},"min_statement_index":{"default":1,"type":"integer"}},"type":"object"},"FinicityRequestVoeTransactionsReportSchema":{"properties":{"from_date":{"format":"date-time","type":"string"}},"type":"object"},"FirmographicIndustryCode":{"properties":{"code":{"description":"Industry classification code.","type":"string"},"description":{"description":"Source description of the industry code.","nullable":true,"type":"string"},"extension":{"description":"Source extension of the industry code; null when absent.","nullable":true,"type":"string"},"rank":{"description":"Position within this source's own list of codes; rank one is that source's primary code. Ranks restart at one for each source, so the same rank appears once per source.","type":"integer"}},"required":["code","rank"],"type":"object"},"FirmographicMSA":{"properties":{"code":{"description":"Metropolitan statistical area code; null when absent.","nullable":true,"type":"string"},"name":{"description":"Metropolitan statistical area name; null when absent.","nullable":true,"type":"string"}},"type":"object"},"FirmographicPerson":{"properties":{"address":{"description":"Address the source recorded for this person, which need not be the business's own. Null when the source gave none.","nullable":true,"type":"string"},"name":{"description":"Name of the person associated with the business.","type":"string"},"title":{"description":"Source-provided role or title; null when absent.","nullable":true,"type":"string"}},"required":["name"],"type":"object"},"FlowmingoWorkflowOwners":{"properties":{"group_slack_name":{"items":{"type":"string"},"type":"array"},"user_email":{"items":{"format":"email","type":"string"},"type":"array"}},"type":"object"},"FormField":{"properties":{"field_type":{"enum":["text","password"]},"label":{"type":"string"},"name":{"type":"string"},"required":{"type":"boolean"}},"required":["field_type","label","name","required"],"type":"object"},"FraudNetworkCreateSchema":{"additionalProperties":false,"properties":{"name":{"type":"string"},"notes":{"nullable":true,"type":"string"}},"required":["name"],"type":"object"},"FraudNetworkEdge":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"nullable":true,"readOnly":true,"type":"string"},"edge_type":{"enum":["account_transfer","ownership"],"readOnly":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceRead"},"readOnly":true,"type":"array"},"from_node_heron_id":{"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"to_node_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkEdgeCreateSchema":{"additionalProperties":false,"properties":{"edge_type":{"enum":["account_transfer","ownership"],"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceCreate"},"type":"array"},"from_node_heron_id":{"type":"string"},"to_node_heron_id":{"type":"string"}},"required":["edge_type","from_node_heron_id","to_node_heron_id"],"type":"object"},"FraudNetworkEdgeSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"nullable":true,"readOnly":true,"type":"string"},"edge_type":{"enum":["account_transfer","ownership"],"readOnly":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceRead"},"readOnly":true,"type":"array"},"from_node_heron_id":{"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"to_node_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkEdgeUpdateSchema":{"additionalProperties":false,"properties":{"edge_type":{"enum":["account_transfer","ownership"],"type":"string"},"from_node_heron_id":{"type":"string"},"to_node_heron_id":{"type":"string"}},"type":"object"},"FraudNetworkEvidence":{"properties":{"added_by":{"readOnly":true,"type":"string"},"audience":{"enum":["heron_internal","disclosable"],"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"detail":{"additionalProperties":{},"readOnly":true,"type":"object"},"edge_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"kind":{"enum":["detected_money_flow","detected_funding","customer_reported_fraud","detected_shared_identifier","detected_identity_details","public_record","staff_note"],"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"node_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"note":{"readOnly":true,"type":"string"},"occurred_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"refs":{"additionalProperties":{},"readOnly":true,"type":"object"},"reporter_identified":{"readOnly":true,"type":"boolean"},"reporting_user_id":{"nullable":true,"readOnly":true,"type":"integer"},"retracted_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"retracted_by":{"nullable":true,"readOnly":true,"type":"string"},"retraction_reason":{"nullable":true,"readOnly":true,"type":"string"},"source":{"readOnly":true,"type":"string"},"source_ref":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"}},"type":"object"},"FraudNetworkEvidenceCreate":{"additionalProperties":false,"properties":{"audience":{"enum":["heron_internal","disclosable"],"type":"string"},"detail":{"additionalProperties":{},"type":"object"},"kind":{"enum":["detected_money_flow","detected_funding","customer_reported_fraud","detected_shared_identifier","detected_identity_details","public_record","staff_note"],"type":"string"},"note":{"type":"string"},"occurred_at":{"format":"date-time","nullable":true,"type":"string"},"refs":{"additionalProperties":{},"type":"object"},"reporter_identified":{"type":"boolean"},"reporting_user_id":{"nullable":true,"type":"integer"},"source":{"type":"string"},"source_ref":{"additionalProperties":{},"nullable":true,"type":"object"}},"required":["audience","kind","note","occurred_at","reporter_identified","source"],"type":"object"},"FraudNetworkEvidenceRead":{"properties":{"added_by":{"readOnly":true,"type":"string"},"audience":{"enum":["heron_internal","disclosable"],"readOnly":true,"type":"string"},"detail":{"additionalProperties":{},"readOnly":true,"type":"object"},"kind":{"enum":["detected_money_flow","detected_funding","customer_reported_fraud","detected_shared_identifier","detected_identity_details","public_record","staff_note"],"readOnly":true,"type":"string"},"note":{"readOnly":true,"type":"string"},"occurred_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"refs":{"additionalProperties":{},"readOnly":true,"type":"object"},"retracted_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"source":{"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkEvidenceRetractionSchema":{"additionalProperties":false,"properties":{"retraction_reason":{"type":"string"}},"required":["retraction_reason"],"type":"object"},"FraudNetworkInputCoverage":{"properties":{"address":{"type":"boolean"},"dba":{"type":"boolean"},"ein":{"type":"boolean"},"legal_name":{"type":"boolean"},"owner_name":{"type":"boolean"},"owner_ssn":{"type":"boolean"}},"required":["address","dba","ein","legal_name","owner_name","owner_ssn"],"type":"object"},"FraudNetworkMatchMeta":{"properties":{"distance_to_first_payment_default":{"nullable":true,"type":"integer"},"matched_fields":{"items":{"$ref":"#/components/schemas/FraudNetworkResultMatchedField"},"type":"array"},"score":{"type":"number"}},"required":["distance_to_first_payment_default","matched_fields","score"],"type":"object"},"FraudNetworkNode":{"properties":{"address_line_1":{"nullable":true,"readOnly":true,"type":"string"},"address_line_2":{"nullable":true,"readOnly":true,"type":"string"},"city":{"nullable":true,"readOnly":true,"type":"string"},"company_name":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"nullable":true,"readOnly":true,"type":"string"},"dba":{"nullable":true,"readOnly":true,"type":"string"},"ein":{"nullable":true,"readOnly":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceRead"},"readOnly":true,"type":"array"},"heron_id":{"readOnly":true,"type":"string"},"internal_notes":{"nullable":true,"readOnly":true,"type":"string"},"is_matchable":{"readOnly":true,"type":"boolean"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"network_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"network_name":{"nullable":true,"readOnly":true,"type":"string"},"node_type":{"enum":["company","person"],"readOnly":true,"type":"string"},"owner_names":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"},"owner_ssns":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"},"reason_code":{"nullable":true,"readOnly":true,"type":"string"},"source":{"nullable":true,"readOnly":true,"type":"string"},"state":{"nullable":true,"readOnly":true,"type":"string"},"validated_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"validated_by":{"nullable":true,"readOnly":true,"type":"string"},"zip":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkNodeCreateSchema":{"additionalProperties":false,"properties":{"address_line_1":{"nullable":true,"type":"string"},"address_line_2":{"nullable":true,"type":"string"},"city":{"nullable":true,"type":"string"},"company_name":{"nullable":true,"type":"string"},"dba":{"nullable":true,"type":"string"},"ein":{"nullable":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceCreate"},"type":"array"},"internal_notes":{"nullable":true,"type":"string"},"network_heron_id":{"nullable":true,"type":"string"},"node_type":{"enum":["company","person"],"type":"string"},"owner_names":{"items":{"type":"string"},"nullable":true,"type":"array"},"owner_ssns":{"items":{"type":"string"},"nullable":true,"type":"array"},"reason_code":{"enum":["money_movement_ring","first_payment_default",null],"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"state":{"nullable":true,"type":"string"},"zip":{"nullable":true,"type":"string"}},"required":["node_type"],"type":"object"},"FraudNetworkNodeDryRunMatchSchema":{"properties":{"customer":{"readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"},"matched_field":{"readOnly":true,"type":"string"},"score":{"readOnly":true,"type":"number"},"submitted_value":{"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkNodeDryRunRequestSchema":{"additionalProperties":false,"properties":{"address_line_1":{"nullable":true,"type":"string"},"address_line_2":{"nullable":true,"type":"string"},"city":{"nullable":true,"type":"string"},"company_name":{"nullable":true,"type":"string"},"dba":{"nullable":true,"type":"string"},"ein":{"nullable":true,"type":"string"},"node_type":{"enum":["company","person"],"type":"string"},"owner_names":{"items":{"type":"string"},"nullable":true,"type":"array"},"owner_ssns":{"items":{"type":"string"},"nullable":true,"type":"array"},"state":{"nullable":true,"type":"string"},"window_days":{"default":7,"maximum":30,"minimum":1,"type":"integer"},"zip":{"nullable":true,"type":"string"}},"required":["node_type"],"type":"object"},"FraudNetworkNodeDryRunResponseSchema":{"properties":{"matches":{"items":{"$ref":"#/components/schemas/FraudNetworkNodeDryRunMatchSchema"},"readOnly":true,"type":"array"},"summary":{"allOf":[{"$ref":"#/components/schemas/FraudNetworkNodeDryRunSummarySchema"}],"readOnly":true}},"type":"object"},"FraudNetworkNodeDryRunSummarySchema":{"properties":{"deals_matched":{"readOnly":true,"type":"integer"},"distinct_customers":{"readOnly":true,"type":"integer"}},"type":"object"},"FraudNetworkNodeMergeSchema":{"additionalProperties":false,"properties":{"duplicate_heron_id":{"type":"string"}},"required":["duplicate_heron_id"],"type":"object"},"FraudNetworkNodeSchema":{"properties":{"address_line_1":{"nullable":true,"readOnly":true,"type":"string"},"address_line_2":{"nullable":true,"readOnly":true,"type":"string"},"city":{"nullable":true,"readOnly":true,"type":"string"},"company_name":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"nullable":true,"readOnly":true,"type":"string"},"dba":{"nullable":true,"readOnly":true,"type":"string"},"ein":{"nullable":true,"readOnly":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkEvidenceRead"},"readOnly":true,"type":"array"},"heron_id":{"readOnly":true,"type":"string"},"internal_notes":{"nullable":true,"readOnly":true,"type":"string"},"is_matchable":{"readOnly":true,"type":"boolean"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"network_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"network_name":{"nullable":true,"readOnly":true,"type":"string"},"node_type":{"enum":["company","person"],"readOnly":true,"type":"string"},"owner_names":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"},"owner_ssns":{"items":{"type":"string"},"nullable":true,"readOnly":true,"type":"array"},"reason_code":{"nullable":true,"readOnly":true,"type":"string"},"source":{"nullable":true,"readOnly":true,"type":"string"},"state":{"nullable":true,"readOnly":true,"type":"string"},"validated_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"validated_by":{"nullable":true,"readOnly":true,"type":"string"},"zip":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkNodeUpdateSchema":{"additionalProperties":false,"properties":{"address_line_1":{"nullable":true,"type":"string"},"address_line_2":{"nullable":true,"type":"string"},"city":{"nullable":true,"type":"string"},"company_name":{"nullable":true,"type":"string"},"dba":{"nullable":true,"type":"string"},"ein":{"nullable":true,"type":"string"},"internal_notes":{"nullable":true,"type":"string"},"is_matchable":{"type":"boolean"},"network_heron_id":{"nullable":true,"type":"string"},"owner_names":{"items":{"type":"string"},"nullable":true,"type":"array"},"owner_ssns":{"items":{"type":"string"},"nullable":true,"type":"array"},"reason_code":{"enum":["money_movement_ring","first_payment_default",null],"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"state":{"nullable":true,"type":"string"},"zip":{"nullable":true,"type":"string"}},"type":"object"},"FraudNetworkResultBusiness":{"properties":{"address":{"allOf":[{"$ref":"#/components/schemas/AddressFields"}],"nullable":true},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkResultEvidence"},"type":"array"},"heron_id":{"type":"string"},"identifiers":{"items":{"$ref":"#/components/schemas/CompanyId"},"type":"array"},"names":{"items":{"$ref":"#/components/schemas/CompanyName"},"type":"array"},"redacted":{"description":"True when this account has never submitted the node; every identifying field is then empty.","type":"boolean"},"sightings":{"description":"This account's own end users that matched the node.","items":{"$ref":"#/components/schemas/FraudNetworkResultSighting"},"type":"array"},"type_of_entity":{"nullable":true,"type":"string"}},"required":["address","evidence","heron_id","identifiers","names","redacted","sightings","type_of_entity"],"type":"object"},"FraudNetworkResultEdge":{"properties":{"edge_type":{"enum":["owner_of","transacts_with"]},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkResultEvidence"},"type":"array"},"from_node_heron_id":{"type":"string"},"heron_id":{"type":"string"},"to_node_heron_id":{"type":"string"}},"required":["edge_type","evidence","from_node_heron_id","heron_id","to_node_heron_id"],"type":"object"},"FraudNetworkResultEvidence":{"properties":{"detail":{"additionalProperties":{},"description":"Kind-specific detail. `public_record` carries `{is_mca}` per case; case numbers, names and links are never returned.","type":"object"},"heron_id":{"type":"string"},"kind":{"enum":["customer_reported_fraud","public_record","detected_money_flow","detected_funding"]},"occurred_at":{"format":"date","nullable":true,"type":"string"},"source":{"description":"Where the evidence came from, as a fixed vocabulary derived from its kind.","enum":["court_records","consortium_member_report","heron_bank_data"]}},"required":["detail","heron_id","kind","occurred_at","source"],"type":"object"},"FraudNetworkResultMatchedField":{"properties":{"key":{"enum":["legal_name","dba","ein","ssn","owner_name","address"],"type":"string"},"subject":{"enum":["business","owner_1","owner_2"],"type":"string"},"value":{"description":"The submitted value. SSNs and EINs are masked; other values are unchanged.","type":"string"}},"required":["key","subject","value"],"type":"object"},"FraudNetworkResultNetwork":{"properties":{"first_payment_default_count":{"type":"integer"},"heron_id":{"type":"string"},"mca_suit_member_count":{"type":"integer"},"member_count":{"type":"integer"},"reporting_member_count":{"type":"integer"}},"required":["first_payment_default_count","heron_id","mca_suit_member_count","member_count","reporting_member_count"],"type":"object"},"FraudNetworkResultPerson":{"properties":{"address":{"allOf":[{"$ref":"#/components/schemas/AddressFields"}],"nullable":true},"evidence":{"items":{"$ref":"#/components/schemas/FraudNetworkResultEvidence"},"type":"array"},"heron_id":{"type":"string"},"names":{"items":{"$ref":"#/components/schemas/PersonName"},"type":"array"},"national_ids":{"items":{"$ref":"#/components/schemas/NationalId"},"type":"array"},"redacted":{"description":"True when this account has never submitted the node; every identifying field is then empty.","type":"boolean"},"sightings":{"description":"This account's own end users that matched the node.","items":{"$ref":"#/components/schemas/FraudNetworkResultSighting"},"type":"array"}},"required":["address","evidence","heron_id","names","national_ids","redacted","sightings"],"type":"object"},"FraudNetworkResultSighting":{"properties":{"end_user_heron_id":{"type":"string"},"role":{"enum":["owner_1","owner_2",null],"nullable":true},"seen_at":{"format":"date-time","type":"string"}},"required":["end_user_heron_id","seen_at"],"type":"object"},"FraudNetworkResultSummary":{"properties":{"headline":{"type":"string"},"matched_on":{"nullable":true,"type":"string"},"network":{"nullable":true,"type":"string"},"seen_elsewhere":{"nullable":true,"type":"string"},"this_business":{"type":"string"},"why_listed":{"nullable":true,"type":"string"}},"required":["headline","matched_on","network","seen_elsewhere","this_business","why_listed"],"type":"object"},"FraudNetworkScanResultSchema":{"properties":{"businesses":{"items":{"$ref":"#/components/schemas/FraudNetworkResultBusiness"},"type":"array"},"classification":{"enum":["fraud_network","lone_actor",null],"nullable":true},"edges":{"items":{"$ref":"#/components/schemas/FraudNetworkResultEdge"},"type":"array"},"input_coverage":{"$ref":"#/components/schemas/FraudNetworkInputCoverage"},"match_meta":{"allOf":[{"$ref":"#/components/schemas/FraudNetworkMatchMeta"}],"nullable":true},"matched_node_heron_id":{"nullable":true,"type":"string"},"monitoring_until":{"format":"date-time","nullable":true,"type":"string"},"network":{"allOf":[{"$ref":"#/components/schemas/FraudNetworkResultNetwork"}],"nullable":true},"people":{"items":{"$ref":"#/components/schemas/FraudNetworkResultPerson"},"type":"array"},"scanned_at":{"format":"date-time","type":"string"},"status":{"enum":["match","no_match","insufficient_input"]},"summary":{"$ref":"#/components/schemas/FraudNetworkResultSummary"}},"required":["businesses","classification","edges","input_coverage","match_meta","matched_node_heron_id","monitoring_until","network","people","scanned_at","status","summary"],"type":"object"},"FraudNetworkSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"created_by":{"nullable":true,"readOnly":true,"type":"string"},"cross_network_edges":{"items":{"$ref":"#/components/schemas/FraudNetworkEdge"},"readOnly":true,"type":"array"},"edge_count":{"readOnly":true,"type":"integer"},"heron_id":{"readOnly":true,"type":"string"},"internal_edges":{"items":{"$ref":"#/components/schemas/FraudNetworkEdge"},"readOnly":true,"type":"array"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"node_count":{"readOnly":true,"type":"integer"},"nodes":{"items":{"$ref":"#/components/schemas/FraudNetworkNode"},"readOnly":true,"type":"array"},"notes":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"FraudNetworkUpdateSchema":{"additionalProperties":false,"properties":{"name":{"type":"string"},"notes":{"nullable":true,"type":"string"}},"type":"object"},"Funder":{"additionalProperties":false,"properties":{"aliases":{"items":{"type":"string"},"readOnly":true,"type":"array"},"classification_instructions":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"email_domains":{"items":{"type":"string"},"readOnly":true,"type":"array"},"extraction_instructions":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"logo_url":{"nullable":true,"readOnly":true,"type":"string"},"merchant_heron_id":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"offer_email_instructions":{"nullable":true,"readOnly":true,"type":"string"},"offer_portal_instructions":{"nullable":true,"readOnly":true,"type":"string"},"offer_source":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"slug":{"nullable":true,"readOnly":true,"type":"string"},"submission_channel":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"submission_email_address":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"Funder1":{"additionalProperties":false,"properties":{"heron_id":{"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"}},"type":"object"},"FunderCandidate":{"additionalProperties":false,"properties":{"funder_heron_id":{"readOnly":true,"type":"string"},"funder_name":{"readOnly":true,"type":"string"},"similarity":{"readOnly":true,"type":"number"}},"type":"object"},"FunderCandidateSchema":{"properties":{"funder_heron_id":{"type":"string"},"funder_logo_url":{"nullable":true,"type":"string"},"funder_name":{"type":"string"}},"required":["funder_heron_id","funder_name"],"type":"object"},"FunderExclusionEvidence":{"properties":{"configured_value":{"readOnly":true,"type":"string"},"funder_heron_id":{"readOnly":true,"type":"string"},"match_type":{"enum":["domain","email","name"],"readOnly":true},"observed_value":{"readOnly":true,"type":"string"},"similarity":{"nullable":true,"readOnly":true,"type":"number"},"status":{"enum":["excluded","held"],"readOnly":true}},"type":"object"},"FunderExclusionResolutionSchema":{"additionalProperties":false,"properties":{"resolution":{"enum":["exclude","allow"],"type":"string"}},"required":["resolution"],"type":"object"},"FunderExclusionSenderIdentitySchema":{"additionalProperties":false,"properties":{"sender_domains":{"items":{"pattern":"^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$","type":"string"},"type":"array"},"sender_emails":{"items":{"format":"email","type":"string"},"type":"array"},"sender_names":{"items":{"type":"string"},"type":"array"}},"type":"object"},"FunderIntegrationConfig":{"properties":{"display_name":{"type":"string"},"form_fields":{"items":{"$ref":"#/components/schemas/FormField"},"type":"array"},"supports_staging":{"type":"boolean"}},"required":["display_name","form_fields","supports_staging"],"type":"object"},"FunderIntegrationViewSchema":{"properties":{"channel":{"enum":["integration","email",null],"nullable":true},"config":{"allOf":[{"$ref":"#/components/schemas/FunderIntegrationConfig"}],"nullable":true},"effective_submission_email_address":{"nullable":true,"type":"string"},"funder_email_domains":{"items":{"type":"string"},"type":"array"},"funder_heron_id":{"type":"string"},"funder_logo_url":{"nullable":true,"type":"string"},"funder_name":{"type":"string"},"production":{"allOf":[{"$ref":"#/components/schemas/IntegrationEnvironment"}],"nullable":true},"sender_address":{"type":"string"},"slug":{"nullable":true,"type":"string"},"staging":{"allOf":[{"$ref":"#/components/schemas/IntegrationEnvironment"}],"nullable":true},"state":{"enum":["not_available","not_configured","staging_configured","staging_live","production_configured","production_live","live"]},"submission_cc_email_addresses":{"items":{"type":"string"},"nullable":true,"type":"array"},"submission_email_address":{"nullable":true,"type":"string"},"submission_email_subject_prefix":{"nullable":true,"type":"string"},"supports_staging":{"type":"boolean"}},"required":["funder_email_domains","funder_heron_id","funder_name","sender_address","state","supports_staging"],"type":"object"},"FunderPolicyEvaluation":{"additionalProperties":false,"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"},"funder":{"allOf":[{"$ref":"#/components/schemas/FunderSearchResultSchema"}],"readOnly":true},"input_data":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"linked_funder_submission":{"allOf":[{"$ref":"#/components/schemas/LinkedFunderSubmission"}],"nullable":true,"readOnly":true},"matching_priority":{"nullable":true,"readOnly":true,"type":"integer"},"recommendation":{"allOf":[{"$ref":"#/components/schemas/Recommendation"}],"nullable":true,"readOnly":true},"recommendation_rank":{"nullable":true,"readOnly":true,"type":"integer"},"result":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"status":{"enum":["not_evaluated","evaluating","matched","mismatched","missing_data","error"],"readOnly":true},"submission_configured":{"readOnly":true,"type":"boolean"}},"type":"object"},"FunderSearchResultSchema":{"additionalProperties":false,"properties":{"heron_id":{"readOnly":true,"type":"string"},"logo_url":{"nullable":true,"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"}},"type":"object"},"FunderSubmissionAttempt":{"additionalProperties":false,"properties":{"channel":{"enum":["email","api","web_portal","all_offers","crm_lendsaas"],"readOnly":true},"completed_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_production":{"readOnly":true,"type":"boolean"},"status":{"enum":["in_progress","succeeded","failed","action_required","unknown"],"readOnly":true},"submission_reference_id":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"FunderSubmissionDecision":{"additionalProperties":false,"properties":{"application_identifier":{"nullable":true,"readOnly":true,"type":"string"},"application_status":{"nullable":true,"readOnly":true,"type":"string"},"attribution_method":{"readOnly":true,"type":"string"},"decline_reason":{"nullable":true,"readOnly":true,"type":"string"},"email_classification":{"enum":["general-chatter","request-for-information","initial-decision","term-negotiation","amendment",null],"nullable":true,"readOnly":true},"email_decision_stage":{"enum":["initial-decision","amendment","pre-decision","post-decision",null],"nullable":true,"readOnly":true},"has_competing_offers":{"nullable":true,"readOnly":true,"type":"boolean"},"heron_id":{"readOnly":true,"type":"string"},"lender_notes":{"nullable":true,"readOnly":true,"type":"string"},"offer_link_url":{"nullable":true,"readOnly":true,"type":"string"},"offers":{"items":{"$ref":"#/components/schemas/FunderSubmissionOffer"},"readOnly":true,"type":"array"},"provider_effective_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"raw_application_status":{"nullable":true,"readOnly":true,"type":"string"},"requested_info":{"nullable":true,"readOnly":true,"type":"string"},"source_email_end_user_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"source_email_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"source_received_at":{"format":"date-time","readOnly":true,"type":"string"},"status_reasoning":{"nullable":true,"readOnly":true,"type":"string"},"stipulations":{"nullable":true,"readOnly":true,"type":"string"},"superseded_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"FunderSubmissionOffer":{"additionalProperties":false,"properties":{"apr":{"nullable":true,"readOnly":true,"type":"number"},"biweekly_payment":{"nullable":true,"readOnly":true,"type":"number"},"buy_rate":{"nullable":true,"readOnly":true,"type":"number"},"commission_amount":{"nullable":true,"readOnly":true,"type":"number"},"commission_percent":{"nullable":true,"readOnly":true,"type":"number"},"computed":{"allOf":[{"$ref":"#/components/schemas/FunderSubmissionOfferComputed"}],"readOnly":true},"daily_payment":{"nullable":true,"readOnly":true,"type":"number"},"draw_fee_amount":{"nullable":true,"readOnly":true,"type":"number"},"draw_fee_percentage":{"nullable":true,"readOnly":true,"type":"number"},"factor_rate":{"nullable":true,"readOnly":true,"type":"number"},"funded_amount":{"nullable":true,"readOnly":true,"type":"number"},"funding_position":{"nullable":true,"readOnly":true,"type":"integer"},"heron_id":{"readOnly":true,"type":"string"},"holdback_percentage":{"nullable":true,"readOnly":true,"type":"number"},"interest_rate":{"nullable":true,"readOnly":true,"type":"number"},"monthly_payment":{"nullable":true,"readOnly":true,"type":"number"},"ordinal":{"readOnly":true,"type":"integer"},"origination_fee_amount":{"nullable":true,"readOnly":true,"type":"number"},"origination_fee_percentage":{"nullable":true,"readOnly":true,"type":"number"},"payback_amount":{"nullable":true,"readOnly":true,"type":"number"},"payment_frequency":{"nullable":true,"readOnly":true,"type":"string"},"raw_product_text":{"nullable":true,"readOnly":true,"type":"string"},"source":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"readOnly":true},"stipulations":{"nullable":true,"readOnly":true,"type":"string"},"term_days":{"nullable":true,"readOnly":true,"type":"number"},"term_months":{"nullable":true,"readOnly":true,"type":"number"},"term_number_of_payments":{"nullable":true,"readOnly":true,"type":"number"},"term_weeks":{"nullable":true,"readOnly":true,"type":"number"},"weekly_payment":{"nullable":true,"readOnly":true,"type":"number"}},"type":"object"},"FunderSubmissionOfferComputed":{"additionalProperties":false,"properties":{"biweekly_payment":{"nullable":true,"readOnly":true,"type":"number"},"buy_rate":{"nullable":true,"readOnly":true,"type":"number"},"commission_amount":{"nullable":true,"readOnly":true,"type":"number"},"commission_percent":{"nullable":true,"readOnly":true,"type":"number"},"daily_payment":{"nullable":true,"readOnly":true,"type":"number"},"factor_rate":{"nullable":true,"readOnly":true,"type":"number"},"monthly_payment":{"nullable":true,"readOnly":true,"type":"number"},"origination_fee_amount":{"nullable":true,"readOnly":true,"type":"number"},"origination_fee_percentage":{"nullable":true,"readOnly":true,"type":"number"},"payback_amount":{"nullable":true,"readOnly":true,"type":"number"},"payment_frequency":{"readOnly":true,"type":"string"},"term_days":{"nullable":true,"readOnly":true,"type":"number"},"term_months":{"nullable":true,"readOnly":true,"type":"number"},"term_number_of_payments":{"nullable":true,"readOnly":true,"type":"number"},"term_weeks":{"nullable":true,"readOnly":true,"type":"number"},"weekly_payment":{"nullable":true,"readOnly":true,"type":"number"}},"type":"object"},"FunderSubmissionPreflightFileSchema":{"additionalProperties":false,"properties":{"end_user_file_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"file_class":{"readOnly":true,"type":"string"},"file_name":{"readOnly":true,"type":"string"},"size_bytes":{"readOnly":true,"type":"integer"}},"type":"object"},"FunderSubmissionPreflightResultSchema":{"additionalProperties":false,"properties":{"files":{"items":{"$ref":"#/components/schemas/FunderSubmissionPreflightFileSchema"},"readOnly":true,"type":"array"},"funder_heron_id":{"readOnly":true,"type":"string"},"funder_name":{"readOnly":true,"type":"string"},"max_message_size_bytes":{"nullable":true,"readOnly":true,"type":"integer"},"message":{"nullable":true,"readOnly":true,"type":"string"},"valid":{"readOnly":true,"type":"boolean"}},"type":"object"},"FunderSubmissionSchema":{"additionalProperties":false,"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"},"funder":{"allOf":[{"$ref":"#/components/schemas/Funder1"}],"readOnly":true},"heron_id":{"readOnly":true,"type":"string"},"status":{"enum":["pending","in_progress","submitted_to_funder","invalid_data_for_funder","submission_failed","approved","declined",null],"nullable":true,"readOnly":true},"submission_result":{"readOnly":true},"submitted_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"GetEndUserDataSourceSummariesParams":{"properties":{"is_enabled":{"description":"Filter by whether the data source is enabled.","nullable":true,"type":"boolean"},"limit":{"default":50,"description":"Pagination limit per page","maximum":200,"minimum":1,"type":"integer"},"page":{"default":1,"description":"Pagination page number","minimum":1,"type":"integer"},"pdf_status":{"description":"Filter to these PDF statuses. Repeat the parameter for more than one.","items":{"enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded"],"type":"string"},"nullable":true,"type":"array"}},"type":"object"},"GetEndUserEmailsOptionsSchema":{"properties":{"limit":{"minimum":1,"type":"integer"},"page":{"minimum":0,"type":"integer"}},"required":["limit","page"],"type":"object"},"GetEndUserFileSummariesParams":{"properties":{"file_class":{"description":"Filter to these file classes. Repeat the parameter for more than one.","items":{"type":"string"},"nullable":true,"type":"array"},"has_bank_statement":{"nullable":true,"type":"boolean"},"limit":{"default":50,"description":"Pagination limit per page","maximum":200,"minimum":1,"type":"integer"},"page":{"default":1,"description":"Pagination page number","minimum":1,"type":"integer"}},"type":"object"},"GetFileRenameRulesSchema":{"properties":{"end_user_file_class":{"type":"string"},"file_name_template":{"type":"string"},"heron_id":{"type":"string"},"is_enabled":{"type":"boolean"},"variables":{"items":{"$ref":"#/components/schemas/VariableDefinition"},"type":"array"}},"required":["end_user_file_class","file_name_template","is_enabled"],"type":"object"},"GetFinancialsSummarySchema":{"properties":{"grouping":{"enum":["by_month","by_quarter","by_year",null],"nullable":true,"type":"string"}},"type":"object"},"GetIsoApplication":{"properties":{"heron_id":{"description":"The ISO application's heron_id","example":"iso_6hBjQT9k6KP2rLCXwjUJff","type":"string"},"processing_status":{"description":"The processing status of the file.","enum":["new","processing","processed","failed"],"example":"processed","type":"string"}},"required":["heron_id","processing_status"],"type":"object"},"GetIsoApplicationSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"description":"The heron_id of the end_user associated with the iso application, if available","readOnly":true,"type":"string"},"end_user_id":{"description":"The end_user_id of the end_user associated with the iso application, if available","readOnly":true,"type":"string"},"field_validations":{"items":{"$ref":"#/components/schemas/IsoApplicationFieldValidation"},"type":"array"},"filename":{"description":"The original filename of the ISO application form","example":"iso_app.pdf","type":"string"},"heron_id":{"description":"The ISO application's heron_id","example":"iso_6hBjQT9k6KP2rLCXwjUJff","type":"string"},"processing_status":{"description":"The processing status of the file.","enum":["new","processing","processed","failed"],"example":"processed","type":"string"},"quality_status":{"description":"The overall field validation results. 'fully_matched' indicated all field validations have passed. 'review_required' indicates one or more field validations failed.","enum":["fully_matched","review_required",null],"example":"fully_matched","nullable":true,"type":"string"},"result":{"additionalProperties":{"$ref":"#/components/schemas/IsoApplicationFieldResult"},"description":"The extracted keys/values from the form, normalised to Heron's field schema. Keys will only be present in results if they are found in the original file. For a full list of fields, see the documentation.","type":"object"},"source_email":{"allOf":[{"$ref":"#/components/schemas/EndUserEmail"}],"description":"Original email that contained ISO application, if applicable","nullable":true,"readOnly":true}},"required":["filename","heron_id","processing_status","quality_status"],"type":"object"},"GetTransactionParams":{"properties":{"account_ids":{"description":"Account ids to include. If not provided, all accounts are included","items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"category_heron_id":{"default":[],"description":"Filter by the heron_id of the category that the transaction is annotated with","example":"ctg_NtfYehXUDtYgrPo5QXVCtS","items":{"type":"string"},"nullable":true,"type":"array"},"confidence_max":{"description":"Filter by maximum confidence of annotation associated with transaction","maximum":1.0,"minimum":0.0,"type":"number"},"confidence_min":{"description":"Filter by minimum confidence of annotation associated with transaction","maximum":1.0,"minimum":0.0,"type":"number"},"counterparty_keyword":{"description":"Filter by keyword match on transaction counterparty; case insensitive","type":"string"},"created_date_max":{"description":"Filter by latest transaction upload date - when Heron received the transaction","example":"2020-04-27","format":"date","type":"string"},"created_date_min":{"description":"Filter by earliest transaction upload date - when Heron received the transaction","example":"2020-04-27","format":"date","type":"string"},"data_source_heron_id":{"description":"Filter by data source Heron ID","type":"string"},"description_keyword":{"description":"Filter by keyword match on transaction description; case insensitive","type":"string"},"description_regex":{"description":"Filter by regex matching transaction description","type":"string"},"end_user_id":{"description":"End user id of transaction","type":"string"},"from_date":{"description":"Deprecated; see created_date_ or timestamp_date_","format":"date","type":"string"},"has_matching_transaction":{"description":"Filter by whether the transaction has a matching transaction","type":"boolean"},"has_merchant":{"description":"Filter by whether the transaction has a merchant entity associated with it","nullable":true,"type":"boolean"},"heron_id":{"description":"Heron generated Id of transaction","example":"txn_36i9UmKAKWPQKV9w86XYKY","type":"string"},"heron_ids":{"default":[],"description":"Filter to a specific set of transactions by Heron ID, e.g. the transactions an attribute cites","items":{"type":"string"},"maxItems":100,"type":"array"},"include_duplicates":{"description":"Whether or not to include duplicate transactions in the response. Defaults to false unless request_id is provided, in which case it defaults to true.","type":"boolean"},"is_payment_processing":{"description":"Filter by the recorded payment-processing flag. False includes transactions not yet evaluated.","type":"boolean"},"is_recurring":{"description":"Filter by whether the transaction is recurring","type":"boolean"},"last_updated_max":{"description":"Filter for transactions whose values were last updated in Heron systems before the specified input value","example":"2026-10-06T22:12:43.293016","format":"date-time","type":"string"},"last_updated_min":{"description":"Filter for transactions whose values were last updated in Heron systems after the specified input value","example":"2026-10-06T22:12:43.293003","format":"date-time","type":"string"},"limit":{"default":1000,"description":"Number of transactions to return per page","maximum":10000,"minimum":1,"type":"integer"},"max_amount":{"description":"Filter by maximum amount of transaction","type":"number"},"max_balance":{"description":"Filter by maximum running balance","type":"number"},"merchant_group_id":{"description":"Filter by merchant group id","type":"string"},"merchant_heron_id":{"description":"Filter by merchant heron id","type":"string"},"merchant_name":{"description":"Filter by keyword match on merchant name; case insensitive","type":"string"},"min_amount":{"description":"Filter by minimum amount of transaction","type":"number"},"min_balance":{"description":"Filter by minimum running balance","type":"number"},"order_by":{"default":"id_asc","description":"What to order transactions by","enum":["amount_asc","amount_desc","abs_amount_asc","abs_amount_desc","description_asc","description_desc","timestamp_asc","timestamp_desc","id_asc","id_desc","confidence_asc","confidence_desc","created_asc","created_desc","balance_asc","balance_desc"],"type":"string"},"page":{"default":1,"description":"Page of transaction to return","minimum":1,"type":"integer"},"reference_id":{"description":"Reference Id of transaction","type":"string"},"request_id":{"description":"Request-Id header returned in the response of POST transactions. Sending this parameter will return all transactions sent in a particular POST request, including any duplicates.","type":"string"},"timestamp_date_max":{"description":"Filter by latest transaction timestamp","example":"2020-04-27","format":"date","type":"string"},"timestamp_date_min":{"description":"Filter by earliest transaction timestamp","example":"2020-04-27","format":"date","type":"string"},"to_date":{"description":"Deprecated; see created_date_ or timestamp_date_","format":"date","type":"string"},"transaction_code":{"description":"Filter by transaction code","type":"string"}},"type":"object"},"GroupedTransaction":{"properties":{"amount":{"$ref":"#/components/schemas/Money"},"category":{"$ref":"#/components/schemas/GroupedTransactionsCategory"},"description":{"type":"string"},"heron_id":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}},"type":"object"},"GroupedTransactionMerchant":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/MerchantCategory"},"readOnly":true,"type":"array"},"group_id":{"enum":["Uber","Google","Intuit","debt.mca_or_rbf","debt.non_bank_business","debt.equipment_and_auto_leasing","debt.mortgage","debt.personal_non_mortgage","debt.collections","debt.bank","invoice_factoring","fuel_provider","gambling_and_betting",null],"nullable":true,"type":"string"},"heron_id":{"example":"mrc_iBhdsmr47exuft9PaatLXN","readOnly":true,"type":"string"},"icon_url":{"format":"url","readOnly":true,"type":"string"},"logo_url":{"format":"url","readOnly":true,"type":"string"},"name":{"type":"string"}},"type":"object"},"GroupedTransactionsCategory":{"properties":{"heron_id":{"type":"string"},"label":{"type":"string"}},"type":"object"},"Handle":{"properties":{"identifier":{"type":"string"},"name":{"type":"string"}},"required":["identifier","name"],"type":"object"},"HeronScoreFeatureGroupContribution":{"properties":{"relative_contribution":{"type":"number"},"relative_population_avg":{"type":"number"}},"type":"object"},"HeronScoreSchema":{"properties":{"data_quality_issues":{"description":"A list of data quality issues that may have impacted the score","items":{"enum":["transactions_without_timestamps","date_range_too_low","confidence_too_low","ctg_coverage_too_low","data_volume_too_low","data_not_fresh"],"type":"string"},"type":"array"},"feature_groups_contributions":{"additionalProperties":{"$ref":"#/components/schemas/HeronScoreFeatureGroupContribution"},"type":"object"},"predicted_at":{"description":"When the Heron Score was predicted","format":"date-time","type":"string"},"reference_timestamp":{"description":"When the Heron Score was calculated for; by default the last transaction timestamp for the company","format":"date-time","type":"string"},"status":{"enum":["not_available","partially_available","available"],"type":"string"},"value":{"description":"The Heron Score value","type":"integer"}},"type":"object"},"HumanInTheLoopParserConfig":{"properties":{"alert_channel":{"nullable":true,"type":"string"},"enabled":{"type":"boolean"},"run_jitl":{"type":"boolean"}},"type":"object"},"IdentityFraudFlag":{"properties":{"category":{"description":"Identity-fraud signal category.","enum":["ssn_multiple_identities","deceased_ssn","ssn_anomaly","ssn_address_alert"],"type":"string"},"detail":{"description":"Source-provided signal detail; null when unavailable.","nullable":true,"type":"string"},"flag":{"description":"Identity-fraud signal reported for the applicant.","type":"string"}},"required":["category","flag"],"type":"object"},"InboundEmailSettings":{"properties":{"allowed_from_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"allowed_from_domains":{"items":{"type":"string"},"type":"array"},"allowed_to_addresses":{"items":{"format":"email","type":"string"},"type":"array"},"blocked_from_domains":{"items":{"type":"string"},"type":"array"},"email_classification_ignored_domains":{"description":"The customer's own email domains. Addresses from these domains are excluded from the rule-based broker/lender role assignment, since they typically belong to the lender/operator rather than the broker submitting the deal. For example, if big_capital.com is listed and we receive an email from bob@big_capital.com, Bob will not be automatically assigned the broker role \u2014 though the LLM may still assign it if the email content suggests otherwise.","items":{"type":"string"},"type":"array"},"match_emails_with_same_subject_line":{"description":"Whether to group re-submissions with the same subject line into the same end user","type":"boolean"},"skip_to_address_check_from_domains":{"items":{"type":"string"},"type":"array"}},"type":"object"},"IndustryParams":{"properties":{"naics_code_max_digits":{"description":"Maximum number of digits in NAICS code","example":6,"maximum":6,"minimum":2,"type":"integer"},"naics_code_min_digits":{"description":"Minimum number of digits in NAICS code","example":2,"maximum":6,"minimum":2,"type":"integer"}},"type":"object"},"IndustrySchema":{"properties":{"label":{"description":"The text name of the taxonomy value","example":"Fruit and Vegetable Preserving and Specialty Food Manufacturing","type":"string"},"probability":{"description":"The probability that the end user is associated with the industry; we will always return the highest probability industry","example":0.42,"type":"number"},"taxonomy":{"description":"Industry classification system used","example":"naics","type":"string"},"taxonomy_value":{"description":"The predicted industry for the end user according to taxonomy","example":"3114","type":"string"}},"type":"object"},"InscribeAccount":{"properties":{"account_type":{"nullable":true,"type":"string"},"beginning_balance":{"allOf":[{"$ref":"#/components/schemas/InscribeNumberPrediction"}],"nullable":true},"ending_balance":{"allOf":[{"$ref":"#/components/schemas/InscribeNumberPrediction"}],"nullable":true},"institution_name":{"nullable":true,"type":"string"},"number":{"$ref":"#/components/schemas/InscribeStringPrediction"},"transactions":{"items":{"$ref":"#/components/schemas/InscribeTransaction"},"type":"array"},"transactions_match_balances":{"nullable":true,"type":"boolean"}},"type":"object"},"InscribeNumberPrediction":{"properties":{"confidence":{"type":"number"},"normalized":{"type":"integer"},"raw":{"type":"string"}},"type":"object"},"InscribeParsedDetails":{"properties":{"bank_accounts":{"items":{"$ref":"#/components/schemas/InscribeAccount"},"type":"array"},"name":{"$ref":"#/components/schemas/InscribeParsedDetailsName"}},"type":"object"},"InscribeParsedDetailsName":{"properties":{"raw":{"type":"string"}},"type":"object"},"InscribeSchema":{"properties":{"customer_name":{"nullable":true,"type":"string"},"parsed_details":{"$ref":"#/components/schemas/InscribeParsedDetails"}},"type":"object"},"InscribeStringPrediction":{"properties":{"confidence":{"type":"number"},"normalized":{"type":"string"},"raw":{"type":"string"}},"type":"object"},"InscribeTransaction":{"properties":{"amount":{"type":"integer"},"date":{"format":"date","type":"string"},"description":{"type":"string"},"id":{"type":"string"}},"type":"object"},"InspectionReportSchema":{"properties":{"inspection_data":{"additionalProperties":{},"nullable":true,"type":"object"},"type_of_inspection":{"enum":["CommercialProperty","CommercialLiability","CommercialPackage","ContractorTelephone","Nonproductive","InsuredFailureToAppear","Mueller","Other",null],"nullable":true,"type":"string"}},"type":"object"},"IntegrationEnvironment":{"properties":{"has_credentials":{"type":"boolean"},"last_test_attempted_at":{"format":"date-time","nullable":true,"type":"string"},"last_test_deal_id":{"nullable":true,"type":"string"},"last_test_status":{"enum":["not_run","in_progress","succeeded","failed"]},"last_test_status_message":{"nullable":true,"type":"string"}},"required":["has_credentials","last_test_status"],"type":"object"},"IntegrationLinkNewSchema":{"properties":{"access_token":{"description":"The generated token that grants access to the bank (this is encrypted in transit and at-rest with a custom key)","example":"access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6","nullable":false,"type":"string","writeOnly":true},"asset_report_token":{"description":"Optional. If you already have a Plaid asset report, pass the token to skip creating a new one.","nullable":true,"type":"string","writeOnly":true},"created":{"description":"When the integration link was created in Heron system","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"data_source_heron_id":{"type":"string"},"end_user_id":{"description":"A unique identifier for your end user (customer) generated by you","example":"f095fa32-0279-41de-804c-0e27530d55dd","type":"string","writeOnly":true},"end_user_name":{"description":"An human readable name for this end user, like the company legal name","example":"Acme Corp","type":"string","writeOnly":true},"item_id":{"description":"Unique identifier for each bank connection made by your end users. In Plaid this is the 'item_id'.","example":"M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op","nullable":false,"type":"string"},"last_successful_sync":{"description":"When the integration link was last successfully synced","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the integration link was last updated in Heron system","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"status":{"description":"The integration link status","enum":["pending","active","syncing","erroring","sync_disabled","deleted_in_plaid"],"example":"active","readOnly":true,"type":"string"},"status_message":{"description":"A message describing the 'erroring' status of the integration link","example":"[ITEM_LOGIN_REQUIRED] the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state","readOnly":true,"type":"string"},"type":{"description":"The integration link type, inherited from the integration: plaid_assets_report or plaid_integration","example":"plaid_assets_report","readOnly":true,"type":"string"}},"required":["access_token","end_user_id","item_id"],"type":"object"},"IntegrationLinkSchema":{"properties":{"access_token":{"description":"The generated token that grants access to the bank (this is encrypted in transit and at-rest with a custom key)","example":"access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6","nullable":false,"type":"string","writeOnly":true},"asset_report_token":{"description":"Optional. If you already have a Plaid asset report, pass the token to skip creating a new one.","nullable":true,"type":"string","writeOnly":true},"created":{"description":"When the integration link was created in Heron system","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"end_user_id":{"description":"A unique identifier for your end user (customer) generated by you","example":"f095fa32-0279-41de-804c-0e27530d55dd","type":"string","writeOnly":true},"end_user_name":{"description":"An human readable name for this end user, like the company legal name","example":"Acme Corp","type":"string","writeOnly":true},"item_id":{"description":"Unique identifier for each bank connection made by your end users. In Plaid this is the 'item_id'.","example":"M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op","nullable":false,"type":"string"},"last_successful_sync":{"description":"When the integration link was last successfully synced","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"last_updated":{"description":"When the integration link was last updated in Heron system","example":"2020-01-01T00:00:00Z","format":"date-time","readOnly":true,"type":"string"},"status":{"description":"The integration link status","enum":["pending","active","syncing","erroring","sync_disabled","deleted_in_plaid"],"example":"active","readOnly":true,"type":"string"},"status_message":{"description":"A message describing the 'erroring' status of the integration link","example":"[ITEM_LOGIN_REQUIRED] the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state","readOnly":true,"type":"string"},"type":{"description":"The integration link type, inherited from the integration: plaid_assets_report or plaid_integration","example":"plaid_assets_report","readOnly":true,"type":"string"}},"required":["access_token","end_user_id","item_id"],"type":"object"},"IntegrationLinkUpdateSchema":{"properties":{"access_token":{"description":"The generated token that grants access to the bank (this is encrypted in transit and at-rest with a custom key)","example":"access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6","type":"string","writeOnly":true}},"required":["access_token"],"type":"object"},"IntegrationSchema":{"properties":{"base_url":{"description":"Base URL of the API integration. For Google Drive, use root_dir_path in client_auth instead.","example":"https://sandbox.plaid.com","format":"url","nullable":true,"type":"string"},"client_auth":{"additionalProperties":{},"description":"Client-specific authentication settings depending on the integration type","type":"object","writeOnly":true},"client_id":{"description":"Client ID for API access (this is encrypted in transit and at-rest with a custom key). Required for Plaid integration","nullable":true,"type":"string"},"client_secret":{"description":"Client Secret for API access (this is encrypted in transit and at-rest with a custom key). Required for Plaid integration","nullable":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"name":{"description":"A name for your integration","example":"Plaid Prod","type":"string"},"resource":{"description":"For integrations with multiple available resources, the specific resource","enum":["transaction","assets_report","end_user_application","invoice_factoring_processing","end_user_files","funder_decision"],"type":"string"},"type":{"description":"The integration type, a specific provider","type":"string"},"webhook_url":{"description":"URL provided by you to which we'll forward all webhooks (optional)","example":"https://your-server.yourdomain.com/hooks","format":"url","nullable":true,"type":"string"}},"required":["name","resource","type"],"type":"object"},"InteractionLogResponseSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"IsoAppAddress":{"properties":{"address_line_1":{"nullable":true,"type":"string"},"address_line_2":{"nullable":true,"type":"string"},"city":{"nullable":true,"type":"string"},"state":{"nullable":true,"type":"string"},"zip":{"nullable":true,"type":"string"}},"required":["address_line_1","address_line_2","city","state","zip"],"type":"object"},"IsoAppBusiness":{"properties":{"address":{"allOf":[{"$ref":"#/components/schemas/IsoAppAddress"}],"nullable":true},"annual_revenue":{"nullable":true,"type":"number"},"doing_business_as":{"nullable":true,"type":"string"},"ein":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"incorporated_state":{"nullable":true,"type":"string"},"industry":{"nullable":true,"type":"string"},"monthly_revenue":{"nullable":true,"type":"number"},"name":{"nullable":true,"type":"string"},"phone_number":{"nullable":true,"type":"string"},"start_date":{"nullable":true,"type":"string"},"type_of_business_entity":{"nullable":true,"type":"string"},"website":{"nullable":true,"type":"string"}},"required":["address","annual_revenue","doing_business_as","ein","email","incorporated_state","industry","monthly_revenue","name","phone_number","start_date","type_of_business_entity","website"],"type":"object"},"IsoAppFunding":{"properties":{"amount_requested":{"nullable":true,"type":"number"},"loan_purpose":{"nullable":true,"type":"string"}},"required":["amount_requested","loan_purpose"],"type":"object"},"IsoAppOwnerWithSignature":{"properties":{"address":{"allOf":[{"$ref":"#/components/schemas/IsoAppAddress"}],"nullable":true},"cell_phone":{"nullable":true,"type":"string"},"credit_score":{"nullable":true,"type":"integer"},"date_of_signature":{"nullable":true,"type":"string"},"dob":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"first_name":{"nullable":true,"type":"string"},"home_phone":{"nullable":true,"type":"string"},"is_signed":{"nullable":true,"type":"boolean"},"last_name":{"nullable":true,"type":"string"},"ownership_percent":{"nullable":true,"type":"string"},"ssn":{"nullable":true,"type":"string"}},"required":["address","cell_phone","date_of_signature","dob","email","first_name","home_phone","is_signed","last_name","ownership_percent","ssn"],"type":"object"},"IsoAppWithOwnerSignaturesResponseSchema":{"properties":{"business":{"allOf":[{"$ref":"#/components/schemas/IsoAppBusiness"}],"nullable":true},"funding":{"allOf":[{"$ref":"#/components/schemas/IsoAppFunding"}],"nullable":true},"owner1":{"allOf":[{"$ref":"#/components/schemas/IsoAppOwnerWithSignature"}],"nullable":true},"owner2":{"allOf":[{"$ref":"#/components/schemas/IsoAppOwnerWithSignature"}],"nullable":true}},"required":["business","funding","owner1","owner2"],"type":"object"},"IsoApplicationFieldResult":{"properties":{"document_field_name":{"description":"The field's original name in the source document","example":"Company Legal Name","type":"string"},"is_empty":{"description":"Whether the value is empty","example":false,"type":"boolean"},"value":{"description":"The value extracted from the document for the current field","example":"Heron Data Ltd","type":"string"},"value_confidence":{"description":"OCR confidence of the extracted value","example":0.99,"nullable":true,"type":"number"}},"required":["document_field_name","is_empty","value","value_confidence"],"type":"object"},"IsoApplicationFieldValidation":{"properties":{"failure_reason":{"nullable":true,"type":"string"},"field_name":{"type":"string"},"result":{"enum":["passed","failed","not_applicable"],"example":"passed","type":"string"},"validation_type":{"type":"string"}},"required":["failure_reason","field_name","result","validation_type"],"type":"object"},"JSONWorkflowDefinition":{"properties":{"debounce_seconds":{"default":0,"minimum":0,"type":"integer"},"default_on_failure":{"nullable":true,"type":"string"},"edges":{"items":{"$ref":"#/components/schemas/JSONWorkflowEdge"},"type":"array"},"error_handling":{"$ref":"#/components/schemas/JSONWorkflowErrorHandling"},"nodes":{"items":{"$ref":"#/components/schemas/JSONWorkflowNode"},"type":"array"},"workflow_parameters":{"additionalProperties":{},"type":"object"}},"type":"object"},"JSONWorkflowEdge":{"properties":{"from_handle_id":{"default":"default","type":"string"},"from_node_id":{"type":"string"},"to_handle_id":{"default":"default","type":"string"},"to_node_id":{"type":"string"}},"required":["from_node_id","to_node_id"],"type":"object"},"JSONWorkflowErrorHandling":{"properties":{"failure_strategy":{"default":"fail_fast","enum":["fail_fast","best_effort","critical"],"type":"string"},"join_rule":{"default":"all_success","enum":["all_success","any_success"],"type":"string"},"max_attempts_per_node":{"default":1,"minimum":1,"type":"integer"}},"type":"object"},"JSONWorkflowNode":{"properties":{"id":{"type":"string"},"is_critical":{"default":false,"type":"boolean"},"name":{"type":"string"},"parameters":{"additionalProperties":{},"type":"object"},"settings":{"$ref":"#/components/schemas/JSONWorkflowNodeSettings"},"type":{"type":"string"},"version":{"default":1,"type":"integer"}},"required":["id","name","type"],"type":"object"},"JSONWorkflowNodeSettings":{"properties":{"cache":{"$ref":"#/components/schemas/NodeCacheSettings"},"is_disabled":{"default":false,"type":"boolean"},"max_executions_per_end_user":{"default":0,"minimum":0,"type":"integer"},"on_disabled_output_handle_id":{"default":"default","type":"string"}},"type":"object"},"LabelledValue":{"properties":{"label":{"description":"The source's own name for the field, kept verbatim.","type":"string"},"source":{"description":"The source that stated this.","type":"string"},"value":{"description":"The value the source reported.","nullable":true,"type":"string"}},"type":"object"},"LawsuitRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"amount":{"description":"Amount on the case as a decimal string; null when unavailable.","nullable":true,"type":"number"},"amount_type":{"description":"What the lawsuit amount represents: demand or judgment.","enum":["judgment","award","demand",null],"nullable":true,"type":"string"},"case_category":{"description":"Source-provided case category.","nullable":true,"type":"string"},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"case_status":{"description":"Status classification: active, ended, judgment, or no_status. Judgment means entered and still counts as active.","enum":["active","ended","judgment","no_status",null],"nullable":true},"case_sub_category":{"description":"Source-provided case subcategory.","nullable":true,"type":"string"},"case_title":{"description":"Case title; null when unavailable.","nullable":true,"type":"string"},"case_type":{"description":"Source-provided case type.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"defendant_name":{"description":"Defendant named on the case.","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"entry_count":{"description":"Number of underlying source entries combined into this record.","type":"integer"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"is_active":{"description":"True when the lawsuit appears to still be live.","type":"boolean"},"is_felony":{"description":"True when the docket record is felony-graded.","type":"boolean"},"is_mca":{"description":"True when the litigation was brought by a known merchant cash advance funder.","type":"boolean"},"plaintiff_name":{"description":"Plaintiff named on the case.","nullable":true,"type":"string"},"record_type":{"description":"Record class: Lawsuit or Court docket.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source_entries":{"description":"Underlying source rows combined into this record.","items":{"$ref":"#/components/schemas/LitigationEntrySchema"},"type":"array"},"source_entry_ids":{"description":"References for the underlying source rows combined into this record.","items":{"type":"string"},"type":"array"},"status_text":{"description":"Source-provided status string.","nullable":true,"type":"string"}},"type":"object"},"LegalNameWrite":{"additionalProperties":false,"properties":{"effective_from":{"description":"Date the name started, when a source states one.","format":"date","nullable":true,"type":"string"},"effective_to":{"description":"Date the name ended, when a source states one.","format":"date","nullable":true,"type":"string"},"raw":{"description":"The name exactly as the source wrote it, including its legal form.","type":"string"}},"type":"object"},"LienJudgmentEntrySchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"amount":{"description":"Amount on the record as a decimal string; null when unavailable.","nullable":true,"type":"number"},"amount_band":{"description":"Amount band: none, small under $10,000, medium from $10,000 to $49,999.99, or large at $50,000 or more.","enum":["none","small","medium","large"]},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_location":{"description":"Location of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"creditor_count":{"description":"Number of creditors on the case.","type":"integer"},"creditor_name":{"description":"First creditor named on the case; null when unavailable.","nullable":true,"type":"string"},"debtor_name":{"description":"Debtor named on the filing.","nullable":true,"type":"string"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_relationship":{"description":"Relationship to another filing: released_by or release_of; null when unlinked.","nullable":true,"type":"string"},"is_federal_tax_lien":{"description":"True when the filing is a federal tax lien.","type":"boolean"},"is_mca_creditor":{"description":"True when the creditor is a known merchant cash advance funder.","type":"boolean"},"is_released":{"description":"True when the source no longer shows the lien as outstanding. Vacated and closed records are included, not only released ones.","type":"boolean"},"original_filing_number":{"description":"Original filing number for this source entry.","nullable":true,"type":"string"},"record_type":{"description":"Source-provided record class.","nullable":true,"type":"string"},"related_filing_number":{"description":"Reference of the related filing; null when unlinked.","nullable":true,"type":"string"},"release_date":{"description":"Lien release date; null when unreleased.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"satisfaction_date":{"description":"Date the debt was satisfied as recorded on the source; null when unavailable.","format":"date","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"type_of_filing":{"description":"Source-provided filing type, such as JUDGMENT LIEN, FEDERAL TAX LIEN, or STATE TAX LIEN.","nullable":true,"type":"string"},"type_of_satisfaction":{"description":"How the debt was satisfied as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"vacate_date":{"description":"Judgment vacate date; null when not vacated.","format":"date","nullable":true,"type":"string"}},"type":"object"},"LienJudgmentRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"amount":{"description":"Amount on the record as a decimal string; null when unavailable.","nullable":true,"type":"number"},"amount_band":{"description":"Amount band: none, small under $10,000, medium from $10,000 to $49,999.99, or large at $50,000 or more.","enum":["none","small","medium","large"]},"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"court_county":{"description":"County of the court; null when unavailable.","nullable":true,"type":"string"},"court_location":{"description":"Location of the court; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"creditor_count":{"description":"Number of creditors on the case.","type":"integer"},"creditor_name":{"description":"First creditor named on the case; null when unavailable.","nullable":true,"type":"string"},"debtor_name":{"description":"Debtor named on the filing.","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"entry_count":{"description":"Number of underlying source entries combined into this record.","type":"integer"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_relationship":{"description":"Relationship to another filing: released_by or release_of; null when unlinked.","nullable":true,"type":"string"},"is_federal_tax_lien":{"description":"True when the filing is a federal tax lien.","type":"boolean"},"is_mca_creditor":{"description":"True when the creditor is a known merchant cash advance funder.","type":"boolean"},"is_released":{"description":"True when the source no longer shows the lien as outstanding. Vacated and closed records are included, not only released ones.","type":"boolean"},"record_type":{"description":"Source-provided record class.","nullable":true,"type":"string"},"related_filing_number":{"description":"Reference of the related filing; null when unlinked.","nullable":true,"type":"string"},"release_date":{"description":"Lien release date; null when unreleased.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"satisfaction_date":{"description":"Date the debt was satisfied as recorded on the source; null when unavailable.","format":"date","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"shared_case_key":{"description":"Stable key for a record that appears on both owner and business reports; null when not shared.","nullable":true,"type":"string"},"shared_relationship":{"description":"Where the shared record also appears: also_on_business or also_on_owner; null when not shared.","enum":["also_on_owner","also_on_business",null],"nullable":true,"type":"string"},"source_entries":{"description":"Underlying source rows combined into this record.","items":{"$ref":"#/components/schemas/LienJudgmentEntrySchema"},"type":"array"},"source_entry_ids":{"description":"References for the underlying source rows combined into this record.","items":{"type":"string"},"type":"array"},"status":{"description":"Lien status: open, released, vacated, or closed.","enum":["open","released","vacated","closed"]},"type_of_filing":{"description":"Source-provided filing type, such as JUDGMENT LIEN, FEDERAL TAX LIEN, or STATE TAX LIEN.","nullable":true,"type":"string"},"type_of_satisfaction":{"description":"How the debt was satisfied as recorded on the source; null when unavailable.","nullable":true,"type":"string"},"vacate_date":{"description":"Judgment vacate date; null when not vacated.","format":"date","nullable":true,"type":"string"}},"type":"object"},"LinkedFunderSubmission":{"additionalProperties":false,"properties":{"heron_id":{"readOnly":true,"type":"string"},"status":{"enum":["pending","in_progress","submitted_to_funder","invalid_data_for_funder","submission_failed","approved","declined",null],"nullable":true,"readOnly":true},"submitted_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"LitigationEntrySchema":{"properties":{"case_number":{"description":"Court case reference; null when unavailable.","nullable":true,"type":"string"},"court_name":{"description":"Court name; null when unavailable.","nullable":true,"type":"string"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"record_type":{"description":"Source record class: lawsuit or court docket.","nullable":true,"type":"string"},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"},"status_text":{"description":"Source-provided status string.","nullable":true,"type":"string"}},"type":"object"},"LoadUnreconciledTransactionsFilters":{"properties":{"last_n_days":{"minimum":1,"type":"integer"}},"required":["last_n_days"],"type":"object"},"LoadUnreconciledTransactionsRule":{"properties":{"file_class":{"type":"string"},"filters":{"$ref":"#/components/schemas/LoadUnreconciledTransactionsFilters"}},"required":["file_class"],"type":"object"},"LocalVariable":{"properties":{"description":{"type":"string"},"json_schema":{"additionalProperties":{},"type":"object"},"name":{"type":"string"}},"required":["description","json_schema","name"],"type":"object"},"LossRunPolicy":{"properties":{"broker_name":{"description":"The name of the broker that arranged the insurance policy","nullable":true,"type":"string"},"claims":{"description":"A list of the claims associated with the the policy","items":{"$ref":"#/components/schemas/PolicyClaim"},"nullable":true,"type":"array"},"insurance_company_name":{"description":"The insurance company and/or insurance carrier that issued the policy, often listed in the title of the document, e.g. AGMI, National Casualty Company, Atlas Financial Holdings, etc. If multiple possible companies are provided for the policy, include each one separated by forward-slashes.","nullable":true,"type":"string"},"insurance_type":{"description":"The type of insurance for the policy. For example, Liability Loss, Physical Damage, Motor Truck Cargo. Leave blank if not applicable","nullable":true,"type":"string"},"insured_name":{"description":"The name of the person/company on the insurance policy","nullable":true,"type":"string"},"number_of_units":{"description":"The number of individual items or exposures covered under the policy. For example, the number of vehicles covered by the policy. Leave blank if not applicable","nullable":true,"type":"integer"},"policy_cancellation_date":{"description":"The date the policy was cancelled prior to its expiration, if applicable","format":"date","nullable":true,"type":"string"},"policy_effective_date":{"description":"The start date of the policy coverage period in YYYY-MM-DD format","format":"date","nullable":true,"type":"string"},"policy_expiration_date":{"description":"The end date of the policy coverage period in YYYY-MM-DD format","format":"date","nullable":true,"type":"string"},"policy_number":{"description":"The unique identifier assigned to the insurance policy","nullable":true,"type":"string"},"report_generation_date":{"description":"The date the report was generate in YYYY-MM-DD format. This may also be called 'Valuation Date' or 'Individual Risk Experience as of' if not immediately found elsewhere in the document","format":"date","nullable":true,"type":"string"},"total_expense":{"description":"The sum of all expense amounts from all losses in the policy. This value should only be extracted if it is present in the document. Also called 'ALAE Incurred' or 'Total ALAE'","nullable":true,"type":"number"},"total_incurred":{"description":"The sum of total incurred amounts from all losses in the policy. If there were no claims made for the policy, this value should be 0. This value should only be extracted if it is present in the document or if it can be calculated directly from the totals row for the policy using your existing knowledge of loss runs.\nFor example, if there is are Loss Incurred and Total ALAE values for the policy, it is possible to calculate the total incurred","nullable":true,"type":"number"},"total_paid":{"description":"The sum of total paid amounts from all losses in the policy. This value should only be extracted if it is present in the document. If not clearly provided in one of the totals row, 'Total Paid' may be found in the totals row of the 'Paid Loss' column.","nullable":true,"type":"number"},"total_recovered":{"description":"The sum of total recovered amounts from all losses in the policy. This value should only be extracted if it is present in the document.","nullable":true,"type":"number"},"total_reserve":{"description":"The sum of total reserve amounts from all losses in the policy. This value should only be extracted if it is present in the document.","nullable":true,"type":"number"}},"type":"object"},"LossRunResultSchema":{"properties":{"policies":{"description":"A list of the policies on the loss run","items":{"$ref":"#/components/schemas/LossRunPolicy"},"nullable":true,"type":"array"}},"type":"object"},"ManualDealLinkRequest":{"additionalProperties":false,"properties":{"deal_end_user_heron_id":{"type":"string"}},"required":["deal_end_user_heron_id"],"type":"object"},"MarriageRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"ceremony_type":{"description":"Source-provided marriage ceremony type; null for divorce-only rows.","nullable":true,"type":"string"},"county":{"description":"County named on the record.","nullable":true,"type":"string"},"decree_date":{"description":"Divorce decree date; null for marriage-only rows.","format":"date","nullable":true,"type":"string"},"filing_date":{"description":"Divorce filing date; null for marriage-only rows.","format":"date","nullable":true,"type":"string"},"is_active":{"description":"True when the linked divorce case appears active.","type":"boolean"},"is_divorced":{"description":"True when the marriage has a linked divorce record.","type":"boolean"},"location":{"description":"Location named on the record.","nullable":true,"type":"string"},"marriage_date":{"description":"Marriage date; null for divorce-only rows.","format":"date","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"spouse_name":{"description":"Spouse name; null for divorce-only rows.","nullable":true,"type":"string"}},"type":"object"},"MaterialisedEndUserEntityAttribute":{"properties":{"attribute_heron_id":{"type":"string"},"attribute_name":{"type":"string"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"display_order":{"type":"integer"},"materialised_sources":{"items":{"$ref":"#/components/schemas/MaterialisedEndUserEntityAttributeSource"},"type":"array"},"selected_source":{"allOf":[{"$ref":"#/components/schemas/MaterialisedEndUserEntityAttributeSource"}],"nullable":true}},"type":"object"},"MaterialisedEndUserEntityAttributeSource":{"properties":{"source":{"$ref":"#/components/schemas/EndUserEntityAttributeSourceSchema"},"source_data":{"additionalProperties":{},"type":"object"},"timestamp":{"format":"date-time","type":"string"},"value":{}},"type":"object"},"MaterialisedEndUserEntitySchema":{"properties":{"display_order":{"type":"integer"},"entity_heron_id":{"type":"string"},"entity_name":{"type":"string"},"is_list":{"type":"boolean"},"materialised_attributes":{"items":{"$ref":"#/components/schemas/MaterialisedEndUserEntityAttribute"},"type":"array"}},"type":"object"},"McpEndpointCreatedSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"label":{"description":"Human-readable label for this endpoint","readOnly":true,"type":"string"},"request_secret":{"description":"Present only when requested. Shown once; Heron stores only its digest.","readOnly":true,"type":"string"},"request_secret_required":{"description":"Whether MCP requests must carry the endpoint's request secret","readOnly":true,"type":"boolean"}},"type":"object"},"McpEndpointSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"label":{"description":"Human-readable label for this endpoint","readOnly":true,"type":"string"},"request_secret_required":{"description":"Whether MCP requests must carry the endpoint's request secret","readOnly":true,"type":"boolean"}},"type":"object"},"Meeting341":{"properties":{"date_held":{"description":"Date of the meeting; null when unavailable.","format":"date","nullable":true,"type":"string"},"location":{"description":"Where the meeting is held.","nullable":true,"type":"string"},"source":{"description":"The source that stated this.","type":"string"},"time":{"description":"Time of the meeting as the source wrote it.","nullable":true,"type":"string"}},"type":"object"},"Merchant":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/MerchantCategory"},"readOnly":true,"type":"array"},"group_id":{"enum":["Uber","Google","Intuit","debt.mca_or_rbf","debt.non_bank_business","debt.equipment_and_auto_leasing","debt.mortgage","debt.personal_non_mortgage","debt.collections","debt.bank","invoice_factoring","fuel_provider","gambling_and_betting",null],"nullable":true,"type":"string"},"heron_id":{"example":"mrc_iBhdsmr47exuft9PaatLXN","readOnly":true,"type":"string"},"icon_url":{"format":"url","nullable":true,"type":"string"},"is_priority":{"readOnly":true,"type":"boolean"},"logo_url":{"format":"url","nullable":true,"type":"string"},"name":{"type":"string"},"url":{"format":"url","type":"string"}},"required":["name","url"],"type":"object"},"MerchantCategory":{"properties":{"code":{"example":"7311","readOnly":true,"type":"string"},"description":{"example":"Advertising services","nullable":true,"readOnly":true,"type":"string"},"slug":{"example":"advertising_services","nullable":true,"readOnly":true,"type":"string"}},"required":["code"],"type":"object"},"MerchantExtract":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/MerchantCategory"},"readOnly":true,"type":"array"},"confidence":{"maximum":1.0,"minimum":0.0,"nullable":true,"type":"number"},"group_id":{"type":"string"},"heron_id":{"example":"mrc_iBhdsmr47exuft9PaatLXN","readOnly":true,"type":"string"},"icon_url":{"format":"url","readOnly":true,"type":"string"},"logo_url":{"format":"url","readOnly":true,"type":"string"},"name":{"example":"Amazon","nullable":true,"readOnly":true,"type":"string"},"url":{"example":"https://www.amazon.com/","format":"url","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"MerchantFeedback":{"properties":{"heron_id":{"description":"heron_id of the correct merchant","example":"mrc_5RbXuB6eLeNtV3eetrGzaK","type":"string"},"is_correct":{"default":false,"example":false,"type":"boolean"},"name":{"description":"name of the correct merchant","example":"Spotify","type":"string"}},"type":"object"},"MerchantFeedback1":{"properties":{"merchant_group_id":{"description":"Group ID for the merchant (optional, for linking related merchants)","enum":["Uber","Google","Intuit","invoice_factoring","debt.bank","debt.mca_or_rbf","debt.other","debt.non_bank_business","debt.equipment_and_auto_leasing","debt.mortgage","debt.personal_non_mortgage","debt.collections","fuel_provider","gambling_and_betting"],"example":"Uber","type":"string"},"merchant_heron_id":{"description":"Heron ID of the merchant (if known in our database)","example":"mrc_QYh2cbA3NPqab94nuX8hsM","type":"string"},"merchant_name":{"description":"Name of the merchant (required if merchant_heron_id not provided)","example":"Acme Corporation","maxLength":140,"type":"string"},"merchant_url":{"description":"URL of the merchant (optional)","example":"https://acme.com","maxLength":2000,"type":"string"}},"type":"object"},"MerchantGroup":{"properties":{"description":{"description":"Description of merchant group","type":"string"},"id":{"description":"Unique ID of merchant group","type":"string"},"name":{"description":"Display name of merchant group","type":"string"}},"type":"object"},"MerchantList":{"properties":{"group_id":{"enum":["Uber","Google","Intuit","debt.mca_or_rbf","debt.non_bank_business","debt.equipment_and_auto_leasing","debt.mortgage","debt.personal_non_mortgage","debt.collections","debt.bank","invoice_factoring","fuel_provider","gambling_and_betting",null],"nullable":true,"type":"string"},"heron_id":{"example":"mrc_iBhdsmr47exuft9PaatLXN","readOnly":true,"type":"string"},"logo_url":{"format":"url","nullable":true,"type":"string"},"name":{"type":"string"},"url":{"format":"url","type":"string"}},"required":["name","url"],"type":"object"},"MerchantSummaryRow":{"properties":{"group":{"nullable":true,"type":"string"},"heron_id":{"type":"string"},"inflow_metrics":{"$ref":"#/components/schemas/MerchantSummaryRowMetrics"},"name":{"type":"string"},"net_metrics":{"$ref":"#/components/schemas/MerchantSummaryRowMetrics"},"outflow_metrics":{"$ref":"#/components/schemas/MerchantSummaryRowMetrics"},"transactions":{"items":{"$ref":"#/components/schemas/GroupedTransaction"},"type":"array"}},"type":"object"},"MerchantSummaryRowMetrics":{"properties":{"amount":{"$ref":"#/components/schemas/Money"},"changed_in_last_90_days":{"type":"boolean"},"count":{"type":"integer"},"duration_days":{"type":"integer"},"estimated_monthly_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"frequency":{"enum":["not_enough_data","same_day","irregular","daily","weekly","biweekly","monthly","quarterly","annually","weekday","twice_weekly",null],"nullable":true,"type":"string"},"is_active":{"type":"boolean"},"max_amount":{"$ref":"#/components/schemas/Money"},"max_timestamp":{"format":"date-time","type":"string"},"mean_amount":{"$ref":"#/components/schemas/Money"},"mean_interval_days":{"nullable":true,"type":"number"},"median_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Deprecated. This field is no longer being populated","nullable":true},"min_amount":{"$ref":"#/components/schemas/Money"},"min_timestamp":{"format":"date-time","type":"string"},"mode_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Deprecated. This field is no longer being populated","nullable":true},"mode_interval_days":{"nullable":true,"type":"integer"},"std_dev_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true}},"type":"object"},"MergedFiling":{"properties":{"address":{"description":"Address on this filing; null when unavailable.","nullable":true,"type":"string"},"business_name":{"description":"Business name on this filing; null when unavailable.","nullable":true,"type":"string"},"role":{"description":"Role recorded on this filing; null when unavailable.","nullable":true,"type":"string"},"since_date":{"description":"Date this filing reported the affiliation began.","format":"date","nullable":true,"type":"string"},"status":{"description":"Status this filing reported; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"Metadata":{"properties":{"carrier_route":{"nullable":true,"type":"string"},"congressional_district":{"nullable":true,"type":"string"},"county_fips":{"nullable":true,"type":"string"},"county_name":{"nullable":true,"type":"string"},"dst":{"nullable":true,"type":"boolean"},"elot_sequence":{"nullable":true,"type":"string"},"elot_sort":{"nullable":true,"type":"string"},"latitude":{"nullable":true,"type":"number"},"longitude":{"nullable":true,"type":"number"},"precision":{"nullable":true,"type":"string"},"rdi":{"nullable":true,"type":"string"},"record_type":{"nullable":true,"type":"string"},"time_zone":{"nullable":true,"type":"string"},"utc_offset":{"nullable":true,"type":"integer"},"zip_type":{"nullable":true,"type":"string"}},"type":"object"},"Metric":{"properties":{"context":{"description":"Context for how to interpret the metric, e.g., whether a higher value is 'better' than a lower value","enum":["higher_is_better","lower_is_better",null],"example":"higher_is_better","nullable":true,"type":"string"},"currency":{"description":"The ISO currency code for metric, where applicable","nullable":true,"type":"string"},"date_range":{"description":"Metric date range","enum":["latest","last_30_days","last_90_days","last_120_days","last_180_days","last_365_days","next_30_days","next_60_days","next_90_days","next_180_days","last_1_calendar_months","last_3_calendar_months","last_4_calendar_months","last_6_calendar_months","last_12_calendar_months","last_15_calendar_months","last_24_calendar_months","last_1_full_calendar_months","last_2_full_calendar_months","last_3_full_calendar_months","last_6_full_calendar_months","last_12_full_calendar_months","last_60_days","last_45_days","last_2_calendar_months"],"example":"last_180_days","type":"string"},"description":{"description":"Description of metric","example":"The number of unique transactions with a timestamp","nullable":true,"type":"string"},"group":{"description":"The type of metric","enum":["data_quality","processing_quality","balance","profit_and_loss","debt","risk_flag","forecast","heron","ml_feature"],"example":"data_quality","type":"string"},"label":{"description":"Metric label, slugified","example":"unique_transactions","type":"string"},"status":{"description":"either 'calculated' or 'not_available' depending on the requested date range vs. date range of the data","enum":["available","partially_available","not_available",null],"example":"not_available","nullable":true,"type":"string"},"unit":{"description":"The unit of measurement for metric","enum":["n","day","ratio","amount","weekday","array","probability"],"example":"n","type":"string"},"value":{"description":"The metric value","example":42.42,"nullable":true}},"type":"object"},"MetricBenchmarksSchema":{"properties":{"date_range":{"enum":["latest","last_30_days","last_90_days","last_120_days","last_180_days","last_365_days","next_30_days","next_60_days","next_90_days","next_180_days","last_1_calendar_months","last_3_calendar_months","last_4_calendar_months","last_6_calendar_months","last_12_calendar_months","last_15_calendar_months","last_24_calendar_months","last_1_full_calendar_months","last_2_full_calendar_months","last_3_full_calendar_months","last_6_full_calendar_months","last_12_full_calendar_months","last_60_days","last_45_days","last_2_calendar_months"],"example":"last_180_days","type":"string"},"label":{"description":"Metric label, slugified","example":"unique_transactions","type":"string"},"percentile":{"description":"The implied percentile based on ranking and sample size","example":0.75,"nullable":true,"type":"number"},"rank":{"description":"Ranking of metric relative to datapoints. 1 is best","example":22,"nullable":true,"type":"integer"},"sample_size":{"description":"The number of datapoints to compare to","example":42,"type":"integer"},"scope":{"default":"user","description":"What end users are included in metric comparisons","enum":["user","heron"],"example":"user","type":"string"}},"type":"object"},"MetricDefinitionSchema":{"properties":{"date_range":{"description":"The date range this metric covers","example":"last_180_days","type":"string"},"description":{"description":"Human-readable description of the metric","example":"Total number of unique transactions","type":"string"},"group":{"description":"The group/category this metric belongs to","example":"transaction_metrics","type":"string"},"label":{"description":"The label/name of the metric","example":"unique_transactions","type":"string"},"unit":{"description":"The unit of measurement for this metric","example":"count","type":"string"}},"type":"object"},"MetricFormula":{"properties":{"add":{"$ref":"#/components/schemas/MetricFormulaAdd"},"aggregation":{"$ref":"#/components/schemas/MetricFormulaAggregation"},"div":{"$ref":"#/components/schemas/MetricFormulaDiv"},"metric":{"$ref":"#/components/schemas/MetricFormulaMetric"},"mult":{"$ref":"#/components/schemas/MetricFormulaMult"},"scalar":{"$ref":"#/components/schemas/MetricFormulaScalar"},"simple_metric":{"$ref":"#/components/schemas/MetricFormulaSimpleMetric"},"sub":{"$ref":"#/components/schemas/MetricFormulaSub"},"type":{"description":"The type of formula to be used","type":"string"}},"required":["type"],"type":"object"},"MetricFormulaAdd":{"properties":{"addend_1":{"$ref":"#/components/schemas/MetricFormula"},"addend_2":{"$ref":"#/components/schemas/MetricFormula"}},"required":["addend_1","addend_2"],"type":"object"},"MetricFormulaAggregation":{"properties":{"by":{"default":[],"description":"The dimension to be used in the aggregation","items":{"type":"string"},"type":"array"},"formula":{"$ref":"#/components/schemas/MetricFormula"},"op":{"description":"The aggregation operation to be used","type":"string"}},"required":["formula","op"],"type":"object"},"MetricFormulaDiv":{"properties":{"dividend":{"$ref":"#/components/schemas/MetricFormula"},"divisor":{"$ref":"#/components/schemas/MetricFormula"}},"required":["dividend","divisor"],"type":"object"},"MetricFormulaMetric":{"properties":{"date_range":{"description":"The date range to be used in the query. It will override the date range specified in the metric spec","nullable":true,"type":"string"},"filters":{"description":"A list of filters to be applied before computing the metric","items":{"$ref":"#/components/schemas/MetricFormulaSimpleMetricFilter"},"nullable":true,"type":"array"},"metric_name":{"description":"The metric to be used","type":"string"}},"required":["metric_name"],"type":"object"},"MetricFormulaMult":{"properties":{"multiplicand":{"$ref":"#/components/schemas/MetricFormula"},"multiplier":{"$ref":"#/components/schemas/MetricFormula"}},"required":["multiplicand","multiplier"],"type":"object"},"MetricFormulaScalar":{"properties":{"value":{"description":"The value to be used in the formula","type":"integer"}},"required":["value"],"type":"object"},"MetricFormulaSimpleMetric":{"properties":{"date_range":{"description":"The date range to be used in the query. It will override the date range specified in the metric spec","nullable":true,"type":"string"},"filter":{"allOf":[{"$ref":"#/components/schemas/MetricFormulaSimpleMetricFilter"}],"description":"A filter to be applied before computing the metric","nullable":true},"filters":{"description":"A list of filters to be applied before computing the metric","items":{"$ref":"#/components/schemas/MetricFormulaSimpleMetricFilter"},"nullable":true,"type":"array"},"metric_name":{"description":"The metric to be used","type":"string"},"value_if_unavailable":{"description":"The value to be used if the metric is not available","nullable":true}},"required":["metric_name"],"type":"object"},"MetricFormulaSimpleMetricFilter":{"properties":{"dimension":{"description":"The dimension to be used","type":"string"},"operator":{"description":"The operator to be used in the filter","type":"string"},"value":{"description":"The dimension value to be used","type":"string"}},"required":["dimension","value"],"type":"object"},"MetricFormulaSub":{"properties":{"minuend":{"$ref":"#/components/schemas/MetricFormula"},"subtrahend":{"$ref":"#/components/schemas/MetricFormula"}},"required":["minuend","subtrahend"],"type":"object"},"MetricSpec":{"properties":{"context":{"description":"The context to be used in the query","type":"string"},"date_ranges":{"description":"A list of date ranges to be used in the query","items":{"type":"string"},"type":"array"},"description":{"type":"string"},"expression":{"description":"The expression to be used in the query","type":"string"},"formula":{"$ref":"#/components/schemas/MetricFormula"},"group":{"description":"The group to be used in the query","type":"string"},"unit":{"description":"The unit to be used in the query","type":"string"}},"required":["context","date_ranges","description","group","unit"],"type":"object"},"MissingAccountSchema":{"properties":{"account_name":{"description":"An account name extracted from the transaction description","example":"Checking","type":"string"},"account_number":{"description":"An account number extracted from the transaction description","example":"****4321","type":"string"},"transactions":{"items":{"$ref":"#/components/schemas/Transaction3"},"type":"array"}},"type":"object"},"ModifiableSettings":{"properties":{"balance_sheet_categories":{"$ref":"#/components/schemas/BalanceSheetCategories"},"bank_statement_summary_columns":{"items":{"type":"string"},"nullable":true,"type":"array"},"disable_data_export":{"type":"boolean"},"financials_metrics":{"additionalProperties":{"$ref":"#/components/schemas/MetricSpec"},"type":"object"},"industry_naics_enabled":{"type":"boolean"},"low_balance_days_threshold":{"type":"number"},"pnl_categories":{"$ref":"#/components/schemas/PnLCategories"},"query_reports":{"items":{"$ref":"#/components/schemas/QueryReportTabGroup"},"type":"array"},"required_revenue_per_month":{"type":"integer"},"restricted_industries":{"items":{"$ref":"#/components/schemas/RestrictedIndustry"},"type":"array"},"transactions_review_enabled":{"type":"boolean"},"use_new_company_layout":{"type":"boolean"},"use_new_end_user_summary_table":{"type":"boolean"},"use_new_end_user_table":{"type":"boolean"}},"type":"object"},"Money":{"properties":{"amount":{"description":"The amount of money","example":"1234.56","type":"number"},"currency":{"description":"The currency of the money","example":"USD","type":"string"}},"type":"object"},"MoneyMarketStatementResultSchema":{"properties":{"account_holder_address_city":{"nullable":true,"type":"string"},"account_holder_address_line_1":{"nullable":true,"type":"string"},"account_holder_address_state":{"enum":["AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL","GA","HI","IA","ID","IL","IN","KS","KY","LA","MA","MD","ME","MI","MN","MO","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY","PR",null],"nullable":true,"type":"string"},"account_holder_address_zip":{"nullable":true,"type":"string"},"account_holder_name":{"nullable":true,"type":"string"},"account_number":{"nullable":true,"type":"string"},"bank_name":{"nullable":true,"type":"string"},"end_balance":{"nullable":true,"type":"number"},"end_date":{"nullable":true,"type":"string"},"start_balance":{"nullable":true,"type":"number"},"start_date":{"nullable":true,"type":"string"}},"type":"object"},"MoneyThumbOutputSchema":{"properties":{"error":{"type":"string"},"results":{"items":{"$ref":"#/components/schemas/MoneyThumbStatement"},"type":"array"}},"type":"object"},"MoneyThumbStatement":{"properties":{"accountNumber":{"nullable":true,"type":"string"},"accountSequence":{"nullable":true,"type":"integer"},"accounttitle":{"nullable":true,"type":"string"},"bankName":{"nullable":true,"type":"string"},"company":{"nullable":true,"type":"string"},"currencycode":{"nullable":true,"type":"string"},"endBalance":{"nullable":true,"type":"number"},"endBalanceCalc":{"nullable":true,"type":"number"},"endDate":{"nullable":true,"type":"string"},"fraudscore":{"nullable":true,"type":"integer"},"isBusiness":{"nullable":true,"type":"boolean"},"isStrongAccountNo":{"nullable":true,"type":"boolean"},"likelyMissingTransactions":{"default":false,"type":"boolean"},"maxResolution":{"nullable":true,"type":"integer"},"minResolution":{"nullable":true,"type":"integer"},"nonTransactions":{"items":{},"nullable":true,"type":"array"},"numCredits":{"type":"integer"},"numDebits":{"type":"integer"},"numTransactions":{"type":"integer"},"ocr":{"nullable":true,"type":"boolean"},"reconciled":{"type":"boolean"},"startBalance":{"nullable":true,"type":"number"},"startDate":{"nullable":true,"type":"string"},"totCredits":{"nullable":true,"type":"number"},"totDebits":{"nullable":true,"type":"number"},"tpreasons":{"items":{},"nullable":true,"type":"array"},"transactions":{"items":{},"nullable":true,"type":"array"},"webReport":{"nullable":true,"type":"boolean"}},"type":"object"},"MoneyThumbStatementSummary":{"properties":{"account_number":{"type":"string"},"account_title":{"type":"string"},"bank_name":{"type":"string"},"company":{"type":"string"},"currency":{"type":"string"},"end_balance":{"type":"number"},"fraud_reasons":{"items":{"type":"string"},"type":"array"},"fraud_score":{"type":"integer"},"is_business_account":{"type":"boolean"},"is_ocr":{"type":"boolean"},"max_resolution":{"type":"integer"},"min_resolution":{"type":"integer"},"num_credits":{"type":"integer"},"num_debits":{"type":"integer"},"num_transactions":{"type":"integer"},"reconciled":{"description":"Legacy result for whether this statement's transactions add up to its balances. Prefer a non-null `reconciliation_status`; use this value when that status is null.","type":"boolean"},"start_balance":{"type":"number"},"statement_end_date":{"format":"date-time","type":"string"},"statement_start_date":{"format":"date-time","type":"string"},"total_credits":{"type":"number"},"total_debits":{"type":"number"},"unreconciled_end_balance":{"type":"number"},"web_report":{"type":"boolean"}},"required":["end_balance","num_credits","num_debits","num_transactions","reconciled","start_balance","total_credits","total_debits"],"type":"object"},"MoneyThumbTransactionBounds":{"properties":{"page":{"nullable":true,"type":"integer"},"x_max":{"nullable":true,"type":"integer"},"x_min":{"nullable":true,"type":"integer"},"y_max":{"nullable":true,"type":"integer"},"y_min":{"nullable":true,"type":"integer"}},"required":["page","x_max","x_min","y_max","y_min"],"type":"object"},"NamedDateSchema":{"properties":{"date":{"description":"The date of the NamedDate","example":"2026-10-06","format":"date","nullable":true,"type":"string"},"name":{"description":"The name of the NamedDate","enum":["end_user_created","end_user_last_updated","last_transaction","end_user_last_enriched","last_data_source_end_date_or_transaction_timestamp","custom_date"],"example":"last_transaction","type":"string"}},"type":"object"},"NationalId":{"properties":{"country":{"description":"ISO country code of the issuer.","type":"string"},"expires_on":{"description":"Expiry, where the source states one.","format":"date","nullable":true,"type":"string"},"state":{"description":"Issuing state, for a driving licence; null otherwise.","nullable":true,"type":"string"},"type":{"description":"Which identifier this is: `us_ssn`, `ca_sin`, `uk_nino`, `driving_licence` or `passport`.","enum":["us_ssn","ca_sin","uk_nino","driving_licence","passport"]},"value":{"description":"The identifier as stated.","type":"string"}},"type":"object"},"NationalIdWrite":{"additionalProperties":false,"properties":{"country":{"description":"ISO country code of the issuer.","type":"string"},"expires_on":{"description":"Expiry, where the source states one.","format":"date","nullable":true,"type":"string"},"state":{"description":"Issuing state, for a driving licence; null otherwise.","nullable":true,"type":"string"},"type":{"description":"Which identifier this is: `us_ssn`, `ca_sin`, `uk_nino`, `driving_licence` or `passport`.","enum":["us_ssn","ca_sin","uk_nino","driving_licence","passport"]},"value":{"description":"The identifier as stated.","type":"string"}},"type":"object"},"NestedEndUserEntityAttribute":{"properties":{"attribute_description":{"type":"string"},"attribute_name":{"type":"string"},"attribute_sources":{"items":{"$ref":"#/components/schemas/EndUserEntityAttributeSource"},"type":"array"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"display_order":{"type":"integer"},"heron_id":{"type":"string"},"is_dedupe_key":{"default":false,"type":"boolean"},"reconciliation_config":{"additionalProperties":{},"type":"object"},"reconciliation_strategy":{"enum":["sort_order","llm","comparison","concatenate_lists"]}},"type":"object"},"NestedEndUserEntityAttributeSchema":{"properties":{"attribute_description":{"type":"string"},"attribute_name":{"type":"string"},"attribute_sources":{"items":{"$ref":"#/components/schemas/EndUserEntityAttributeSource"},"type":"array"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"display_order":{"type":"integer"},"heron_id":{"type":"string"},"is_dedupe_key":{"default":false,"type":"boolean"},"reconciliation_config":{"additionalProperties":{},"type":"object"},"reconciliation_strategy":{"enum":["sort_order","llm","comparison","concatenate_lists"]}},"type":"object"},"NestedEndUserEntitySchema":{"properties":{"display_order":{"type":"integer"},"entity_attributes":{"items":{"$ref":"#/components/schemas/NestedEndUserEntityAttribute"},"type":"array"},"entity_description":{"type":"string"},"entity_name":{"type":"string"},"entity_post_processor_configs":{"default":[],"items":{"additionalProperties":{},"type":"object"},"type":"array"},"heron_id":{"type":"string"},"is_custom":{"description":"True when no entity template the customer set up in full creates this entity.","readOnly":true,"type":"boolean"},"is_list":{"type":"boolean"},"saved_query_heron_id":{"nullable":true,"type":"string"}},"type":"object"},"NodeCacheSettings":{"properties":{"enabled":{"nullable":true,"type":"boolean"},"scope":{"nullable":true,"type":"string"},"ttl_seconds":{"nullable":true,"type":"integer"}},"type":"object"},"NodeMetadataSchema":{"properties":{"beta":{"type":"boolean"},"cache_policy":{"$ref":"#/components/schemas/CachePolicyDefinition"},"category":{"type":"string"},"deprecation_warning":{"nullable":true,"type":"string"},"description":{"type":"string"},"input_field_order":{"items":{"type":"string"},"type":"array"},"input_handles":{"items":{"$ref":"#/components/schemas/Handle"},"type":"array"},"input_schema":{"additionalProperties":{},"type":"object"},"is_silent_run_safe":{"type":"boolean"},"latest_version":{"type":"integer"},"local_variables":{"items":{"$ref":"#/components/schemas/LocalVariable"},"type":"array"},"output_handles":{"items":{"$ref":"#/components/schemas/Handle"},"type":"array"},"output_schema":{"additionalProperties":{},"type":"object"},"subcategory":{"nullable":true,"type":"string"},"type":{"type":"string"},"use_static_id":{"type":"boolean"},"version":{"type":"integer"}},"required":["beta","cache_policy","category","description","input_field_order","input_handles","input_schema","is_silent_run_safe","latest_version","local_variables","output_handles","output_schema","type","use_static_id","version"],"type":"object"},"NumericCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"type":{"enum":["equal","not_equal","greater_than","greater_than_or_equal","less_than","less_than_or_equal"]},"value":{"type":"string"}},"type":"object"},"OcrolusBankAccount":{"properties":{"account_category":{"type":"string"},"account_number":{"type":"string"},"alternative_lender_transactions":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"daily_balances":{"additionalProperties":{"type":"string"},"type":"object"},"debt_consolidator_txns":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"deposits_max_by_month":{"additionalProperties":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"nullable":true,"type":"array"},"type":"object"},"estimated_expense_txns_list":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"estimated_revenue_txns_list":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"factor_txns":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"holder_country":{"type":"string"},"insurance_credits":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"insurance_debits":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"interbank_transactions":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"merchant_cash_advance_lender_txns":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"non_estimated_revenue_txns_list":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"nsf_transactions":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"nsf_transactions_paid_or_negative_balance":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"nsf_transactions_returned_or_not_paid":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"outside_source_deposits":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"payroll":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"period_balance_mismatches":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"ppp_loan_txns":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"probable_recurring_txns":{"items":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"type":"array"},"returned_items":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"round_number_txns":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"txn_count":{"type":"integer"},"withdrawals":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"type":"array"},"withdrawals_max_by_month":{"additionalProperties":{"items":{"$ref":"#/components/schemas/OcrolusTransaction"},"nullable":true,"type":"array"},"type":"object"}},"type":"object"},"OcrolusResponse":{"properties":{"bank_accounts":{"items":{"$ref":"#/components/schemas/OcrolusBankAccount"},"type":"array"},"name":{"type":"string"}},"required":["bank_accounts","name"],"type":"object"},"OcrolusSchema":{"properties":{"response":{"$ref":"#/components/schemas/OcrolusResponse"}},"required":["response"],"type":"object"},"OcrolusTransaction":{"properties":{"amount":{"type":"string"},"description":{"type":"string"},"pk":{"type":"integer"},"timestamp":{"format":"date-time","type":"string"},"txn_date":{"example":"07/08/2025","format":"date","pattern":"^\\d{2}/\\d{2}/\\d{4}$","type":"string"}},"type":"object"},"OfacRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"action_end_date":{"description":"Date the excluded-party action ended.","format":"date","nullable":true,"type":"string"},"action_start_date":{"description":"Date the excluded-party action began.","format":"date","nullable":true,"type":"string"},"action_term":{"description":"Source-provided duration of the excluded-party action.","nullable":true,"type":"string"},"aliases":{"description":"Aliases listed on the sanctions record.","items":{"type":"string"},"type":"array"},"authority":{"description":"Authority that issued the excluded-party action, such as SAM.","nullable":true,"type":"string"},"charge":{"description":"Charge named on the excluded-party record.","nullable":true,"type":"string"},"city":{"description":"City listed on the sanctions record.","nullable":true,"type":"string"},"country":{"description":"Country listed on the sanctions record.","nullable":true,"type":"string"},"document_title":{"description":"Title of the sanctions document.","nullable":true,"type":"string"},"entity_type":{"description":"Entity type on the source record, such as INDIVIDUAL, COMPANY, or ORGANIZATION.","nullable":true,"type":"string"},"finding":{"description":"Finding stated on the excluded-party record.","nullable":true,"type":"string"},"issuer":{"description":"Issuer named on the sanctions record.","nullable":true,"type":"string"},"issuer_category":{"description":"Category of the sanctions issuer.","nullable":true,"type":"string"},"name":{"description":"Name on the sanctions or excluded-party record.","nullable":true,"type":"string"},"position_role":{"description":"Position or role listed on the sanctions record.","nullable":true,"type":"string"},"publication_date":{"description":"Source publication date; null when unavailable.","format":"date","nullable":true,"type":"string"},"publication_name":{"description":"Publication named on the excluded-party record.","nullable":true,"type":"string"},"region":{"description":"Region listed on the sanctions record.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sanction_full_text":{"description":"Full text of the sanctions record.","nullable":true,"type":"string"},"sanction_type":{"description":"Type of sanction.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"}},"type":"object"},"OutboundEmailSettings":{"properties":{"allowed_to_domains":{"items":{"type":"string"},"type":"array"},"restrict_outbound_emails_to_allowed_domains":{"type":"boolean"}},"type":"object"},"Owner":{"properties":{"credit_score":{"nullable":true,"type":"integer"},"date_of_birth":{"example":"1990-01-01","format":"date","nullable":true,"type":"string"},"email_address":{"nullable":true,"type":"string"},"first_name":{"nullable":true,"type":"string"},"has_signed":{"nullable":true,"type":"boolean"},"home_address":{"$ref":"#/components/schemas/Address"},"home_phone":{"nullable":true,"type":"string"},"last_name":{"nullable":true,"type":"string"},"middle_name":{"nullable":true,"type":"string"},"mobile_phone":{"nullable":true,"type":"string"},"ownership_percentage":{"description":"Percentage of ownership","example":100,"nullable":true,"type":"number"},"prefix":{"description":"Name prefix","example":"Mr","nullable":true,"type":"string"},"signed_date":{"format":"date","nullable":true,"type":"string"},"social_security_number":{"nullable":true,"type":"string"},"suffix":{"description":"Generational or professional suffix","example":"Jr","nullable":true,"type":"string"}},"type":"object"},"OwnerVerification":{"properties":{"credit_scores":{"description":"One check per scoring model, in the order `fico`, `vantagescore`, `unknown`, on the latest score of that model. Sources are compared within one model only. Empty when no source stated a score.","items":{"$ref":"#/components/schemas/CreditScoreCheck"},"type":"array"},"date_of_birth":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's date of birth."},"declared":{"description":"False for a person the sources tie to a share of the company the deal never declared them at.","type":"boolean"},"display_name":{"description":"The name a reader shows the subject under.","nullable":true,"type":"string"},"email":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's email address."},"home_address":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Where the owner lives."},"home_phone":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's home number."},"key":{"description":"The details response key for this subject's row, so a reader can open it.","type":"string"},"linkedin":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's LinkedIn profile."},"mobile_phone":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's mobile number, and any number no source gave a type."},"name":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's name."},"ownership_percentage":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The share of the company the deal stated for them."},"position":{"description":"Their place in the list, which is what `Owner 1` means. Not an identity: owners are ordered by how well attested each is, so a re-run can move someone.","type":"integer"},"relationship":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"Whether a source puts this person at a share of the company."},"ssn":{"allOf":[{"$ref":"#/components/schemas/FieldCheck"}],"description":"The owner's US social security number."},"subject_type":{"enum":["owner","business"]}},"type":"object"},"Pagination":{"properties":{"next_url":{"description":"the URL of the next page","format":"url","nullable":true,"type":"string"},"num_results":{"description":"the number of results on this page","type":"integer"},"page":{"description":"current page","type":"integer"},"pages":{"description":"the number of pages","type":"integer"},"per_page":{"description":"the max number of results per page","type":"integer"},"prev_url":{"description":"the URL of the last page","format":"url","nullable":true,"type":"string"},"total":{"description":"the number of results across all pages","type":"integer"}},"type":"object"},"ParseFileSchema":{"properties":{"parser_id":{"nullable":true,"type":"string"}},"type":"object"},"ParsedEndUserFile":{"properties":{"attribute_values":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"bounding_boxes":{"items":{"$ref":"#/components/schemas/ParsedEndUserFileBoundingBox"},"nullable":true,"type":"array"},"created":{"format":"date-time","type":"string"},"field_validations":{"items":{"$ref":"#/components/schemas/FieldValidation"},"type":"array"},"heron_id":{"description":"Unique identifier of the end user file","type":"string"},"id":{"description":"[DEPRECATED] Unique identifier for the parsed file","type":"integer"},"layout_bounding_boxes":{"items":{"$ref":"#/components/schemas/ParsedEndUserFileBoundingBox"},"nullable":true,"type":"array"},"parser_display_name":{"type":"string"},"parser_id":{"type":"string"},"parsing_status":{"enum":["succeeded","failed","processing"],"type":"string"},"patches":{"items":{"$ref":"#/components/schemas/ParsedEndUserFilePatch"},"type":"array"},"result":{"additionalProperties":{},"description":"Final output result after applying patches","nullable":true,"type":"object"},"result_schema":{"additionalProperties":{},"description":"The output JSON schema the results conform to","type":"object"},"validation_summary":{"description":"Summary of validation results","type":"string"}},"required":["created","heron_id","parser_id","parsing_status"],"type":"object"},"ParsedEndUserFileBoundingBox":{"properties":{"bounding_box":{"description":"Bounding box coordinates in the format 'y1,x1,y2,x2'","items":{"type":"number"},"type":"array"},"json_pointer":{"description":"JSON pointer to the field in the parsed result","type":"string"},"page_num":{"description":"Page number where the bounding box is located","type":"integer"},"value":{"description":"The actual value of the field within the bounding box","type":"string"}},"required":["bounding_box","json_pointer","page_num","value"],"type":"object"},"ParsedEndUserFilePatch":{"properties":{"correction_reason":{"nullable":true,"type":"string"},"enabled":{"nullable":true,"type":"boolean"},"op":{"type":"string"},"original_value":{"nullable":true},"path":{"type":"string"},"source":{"nullable":true,"type":"string"},"value":{"nullable":true}},"required":["op","path"],"type":"object"},"ParsedEndUserFileSchema":{"properties":{"attribute_values":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"bounding_boxes":{"items":{"$ref":"#/components/schemas/ParsedEndUserFileBoundingBox"},"nullable":true,"type":"array"},"created":{"format":"date-time","type":"string"},"field_validations":{"items":{"$ref":"#/components/schemas/FieldValidation"},"type":"array"},"heron_id":{"description":"Unique identifier of the end user file","type":"string"},"id":{"description":"[DEPRECATED] Unique identifier for the parsed file","type":"integer"},"layout_bounding_boxes":{"items":{"$ref":"#/components/schemas/ParsedEndUserFileBoundingBox"},"nullable":true,"type":"array"},"parser_display_name":{"type":"string"},"parser_id":{"type":"string"},"parsing_status":{"enum":["succeeded","failed","processing"],"type":"string"},"patches":{"items":{"$ref":"#/components/schemas/ParsedEndUserFilePatch"},"type":"array"},"result":{"additionalProperties":{},"description":"Final output result after applying patches","nullable":true,"type":"object"},"result_schema":{"additionalProperties":{},"description":"The output JSON schema the results conform to","type":"object"},"validation_summary":{"description":"Summary of validation results","type":"string"}},"required":["created","heron_id","parser_id","parsing_status"],"type":"object"},"ParsedEndUserFilesFilterSchema":{"properties":{"parser_id":{"nullable":true,"type":"string"},"version_number":{"nullable":true,"type":"integer"}},"type":"object"},"ParsedEndUserSubmissionSchema":{"properties":{"end_user_heron_id":{"type":"string"},"result":{"additionalProperties":{},"type":"object"},"status":{"enum":["success","failed"],"type":"string"},"submission_parser":{"$ref":"#/components/schemas/SubmissionParserExternal"}},"type":"object"},"PartialDate":{"properties":{"day":{"description":"Day of the month; null when the source states none.","nullable":true,"type":"integer"},"month":{"description":"Month, 1 to 12; null when the source states none.","nullable":true,"type":"integer"},"year":{"description":"Four-digit year; null when the source states none.","nullable":true,"type":"integer"}},"type":"object"},"PartialDateWrite":{"additionalProperties":false,"properties":{"day":{"description":"Day of the month; null when the source states none.","nullable":true,"type":"integer"},"month":{"description":"Month, 1 to 12; null when the source states none.","nullable":true,"type":"integer"},"year":{"description":"Four-digit year; null when the source states none.","nullable":true,"type":"integer"}},"type":"object"},"PaymentProcessor":{"properties":{"heron_id":{"example":"mrc_nRYdGU7nYuevb7qem65cEb","readOnly":true,"type":"string"},"icon_url":{"example":"https://storage.googleapis.com/heron-merchant-assets/icons/mrc_nRYdGU7nYuevb7qem65cEb.svg","format":"url","nullable":true,"readOnly":true,"type":"string"},"logo_url":{"example":"https://storage.googleapis.com/heron-merchant-assets/logos/mrc_nRYdGU7nYuevb7qem65cEb.svg","format":"url","nullable":true,"readOnly":true,"type":"string"},"name":{"example":"Paypal","nullable":true,"readOnly":true,"type":"string"},"url":{"example":"https://www.paypal.com","format":"url","nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"PdfDefaultCurrencyUpdateSchema":{"properties":{"currency":{"description":"ISO 4217 currency code to update for PDF and all statements","enum":["USD","GBP","EUR","SEK","AED","AUD","SGD","CAD","NOK","IDR","CHF","DKK","MXN","PLN","MYR","VND","RON","TRY","CZK","BGN","HKD","PHP","HUF","NZD","BRL","ILS","COP","RUB","INR","ZAR","THB","JPY","CLP","MAD","RSD","SLE"],"example":"EUR","type":"string"}},"required":["currency"],"type":"object"},"PdfGet":{"properties":{"data_source":{"allOf":[{"$ref":"#/components/schemas/DataSourceNested"}],"description":"The data source for this PDF. Only available after parsing and enrichment has completed, otherwise null.","nullable":true},"heron_id":{"description":"ID generated by Heron Data","example":"pdf_J9VxKAKHPLScjsyLeQdPAZ","type":"string"},"status":{"description":"Status of PDF","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded"],"example":"processed","type":"string"}},"type":"object"},"PdfGetSchema":{"properties":{"account_id":{"description":"Unique ID for account associated with PDF","example":"checking_account_202348","type":"string"},"created":{"description":"Timestamp when PDF was created in Heron system","example":"2026-10-06T22:12:38.241698","format":"date-time","type":"string"},"currency":{"description":"ISO 4217 currency code for transactions in account. We currently only support GBP and USD PDFs","enum":["USD","GBP"],"example":"USD","type":"string"},"data_source":{"allOf":[{"$ref":"#/components/schemas/DataSourceNested"}],"description":"The data source for this PDF. Only available after parsing and enrichment has completed, otherwise null.","nullable":true},"end_user":{"$ref":"#/components/schemas/EndUser2"},"filename":{"description":"The filename of the PDF","example":"my-favourite.pdf","type":"string"},"has_unexplained_edits":{"description":"Whether the PDF's edits are worth investigating. Absent when the file has not been checked.","type":"boolean"},"heron_id":{"description":"ID generated by Heron Data","example":"pdf_J9VxKAKHPLScjsyLeQdPAZ","type":"string"},"is_image_based":{"description":"True if the PDF was processed using image-based OCR. None if not yet processed","nullable":true,"type":"boolean"},"last_updated":{"description":"Timestamp when PDF was last updated in Heron system","example":"2026-10-06T22:12:38.241729","format":"date-time","type":"string"},"notes":{"description":"Notes for the PDF, e.g., failed reason","example":"failed to send to external OCR provider","type":"string"},"parsing_version":{"description":"Indicates which provider was used to parse this pdf","type":"string"},"reconciliation_method":{"description":"How the reconciliation verdict was set: `start_and_end_balance`, `running_balance`, `summary_derived`, `total_debits_credits`, or `zero_balances` for ladder checks; `human` for a reviewer. Null means no method decided the verdict, including when nothing could be checked or when the reconciliation status is null.","enum":["start_and_end_balance","summary_derived","running_balance","total_debits_credits","zero_balances","human",null],"nullable":true},"reconciliation_status":{"description":"Stored reconciliation verdict. `reconciled` means a ladder check passed or a reviewer confirmed the document. `not_possible` means nothing available could verify it. `failed` means a ladder check failed or a reviewer ruled it unreconciled. Null means neither the ladder nor a reviewer set a verdict.","enum":["failed","not_possible","reconciled",null],"nullable":true,"type":"string"},"reference_id":{"description":"An optional field for your unique identifier for the PDF","example":"my-favourite-pdf","type":"string"},"statements":{"items":{"$ref":"#/components/schemas/PdfStatement"},"type":"array"},"status":{"description":"Status of PDF","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded"],"example":"processed","type":"string"}},"type":"object"},"PdfPatchStatementSummary":{"properties":{"account_number":{"type":"string"},"bank_name":{"type":"string"},"company":{"type":"string"},"currency":{"enum":["USD","GBP","EUR","SEK","AED","AUD","SGD","CAD","NOK","IDR","CHF","DKK","MXN","PLN","MYR","VND","RON","TRY","CZK","BGN","HKD","PHP","HUF","NZD","BRL","ILS","COP","RUB","INR","ZAR","THB","JPY","CLP","MAD","RSD","SLE"],"type":"string"},"end_balance":{"type":"number"},"fraud_reasons":{"items":{"type":"string"},"type":"array"},"fraud_score":{"type":"integer"},"start_balance":{"type":"number"},"statement_end_date":{"format":"date-time","type":"string"},"statement_start_date":{"format":"date-time","type":"string"}},"type":"object"},"PdfPatchTransaction":{"properties":{"amount":{"nullable":true,"type":"number"},"balance":{"nullable":true,"type":"number"},"bounds":{"allOf":[{"$ref":"#/components/schemas/MoneyThumbTransactionBounds"}],"nullable":true},"currency":{"nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"ocr_suspect":{"nullable":true,"type":"boolean"},"reference_id":{"nullable":true,"type":"string"},"timestamp":{"format":"date-time","nullable":true,"type":"string"},"transaction_code":{"nullable":true,"type":"string"}},"type":"object"},"PdfPostSchema":{"properties":{"account_id":{"description":"Unique ID for account associated with PDF","example":"checking_account_202348","nullable":true,"type":"string"},"currency":{"description":"ISO 4217 currency code for transactions in account. We currently only support GBP and USD PDFs","enum":["USD","GBP",null],"example":"USD","nullable":true,"type":"string"},"filename":{"description":"The filename of the PDF","example":"my-favourite.pdf","nullable":true,"type":"string"},"is_split":{"description":"Whether the file has been manually split","example":false,"nullable":true,"type":"boolean"},"parent_file_heron_id":{"description":"The Heron ID of the parent file, if this PDF is a split from another file","nullable":true,"type":"string"},"pdf_base64":{"description":"The base64 encoded string of the PDF file. If using Javascript, this is directly the output of the FileReader.readAsDataURL() output.","pattern":"^data\\:\\w+\\/\\w+\\;base64\\,","type":"string"},"read_us_dates":{"description":"True if date formats in the statement are US: month/date/year","nullable":true,"type":"boolean"},"reference_id":{"description":"An optional field for your unique identifier for the PDF","example":"my-favourite-pdf","maxLength":140,"nullable":true,"type":"string"}},"required":["pdf_base64"],"type":"object"},"PdfPutSchema":{"properties":{"filename":{"description":"The filename of the PDF","example":"my-favourite.pdf","type":"string"},"fraud_reason":{"description":"If fraud reason ","nullable":true,"type":"string"},"is_fraud":{"description":"True if fraud was detected in the PDF","type":"boolean"},"notes":{"description":"Notes associated with PDF, e.g., rejected reason, failed reason","type":"string"},"reconciliation_status":{"description":"The reconciliation status a reviewer sets for the document.\n\n- `reconciled` \u2014 the reviewer confirmed the document reconciles.\n- `unreconciled` \u2014 load the transactions but keep the document out of the reconciled scope, so default summaries and policy floors skip it.\n- `not_possible` \u2014 there was nothing to reconcile against.\n\nSend it with `status=approved`, or on its own to restamp a document whose transactions already loaded. Any other status, or no status on a document still in review, is a 400. `unreconciled` and `not_possible` also need unreconciled transaction loading enabled. Omit or null the field to leave the automatic status standing.\n\nWhat you send is what a reviewer can decide, not always what gets stored: `unreconciled` is stored as `failed`, the same value an automatic check writes when it does not match. Read `reconciliation_method` to tell them apart \u2014 `human` marks a reviewer's ruling. `GET /integrations/pdfs/<id>`, `GET /end_users/<id>/pdfs`, `GET /end_users/<id>/data_sources/summary`, and End User SQL (EUSQL) `transactions_all` expose both fields. `GET /end_users/<id>/data_source_account_summary` and the `data_source_account_summary.created` webhook expose the status without the method.\n\nRestamping a loaded document changes nothing else: its `status` stays put and no event fires. Scoped summaries follow on the next read, policy data on the next evaluation.\n\n`reconciled` overrides the stored status but not the `pdf.processed` event, so for a document whose automatic check failed that event keeps reporting `is_reconciled: false`.","enum":["reconciled","unreconciled","not_possible",null],"example":"unreconciled","nullable":true,"type":"string"},"reference_id":{"description":"An optional field for your unique identifier for the PDF","example":"my-favourite-pdf","maxLength":140,"type":"string"},"status":{"description":"Status of PDF","enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded"],"example":"processed","type":"string"}},"type":"object"},"PdfSettings":{"properties":{"auto_approve_passing_pdfs":{"type":"boolean"},"auto_fail":{"type":"boolean"},"enabled":{"type":"boolean"},"fraud_detection":{"type":"boolean"},"identity_account_suffix":{"type":"boolean"},"include_failed_statuses_in_finished_pdfs":{"type":"boolean"},"include_items_returned_unpaid":{"type":"boolean"},"load_unreconciled_transactions":{"oneOf":[{"type":"boolean"},{"items":{"$ref":"#/components/schemas/LoadUnreconciledTransactionsRule"},"minItems":1,"type":"array"}]},"max_fraud_score":{"type":"integer"},"max_pdfs_to_parse":{"nullable":true,"type":"integer"},"override_pdf_parsing_with_temporal_flow":{"type":"boolean"},"parsing_version":{"enum":["0.0.0","1.0.0","2.0.0","3.0.0","4.0.0","4.1.0","5.0.0","6.0.0","7.0.0","7.1.0","8.0.0"],"type":"string"},"reject_duplicated_based_on_text":{"type":"boolean"},"reject_duplicates":{"type":"boolean"},"revision_checks":{"type":"boolean"},"use_cache":{"type":"boolean"},"wells_fargo_iru_same_day_pairing":{"type":"boolean"}},"type":"object"},"PdfStatement":{"properties":{"data_source_account":{"allOf":[{"$ref":"#/components/schemas/DataSourceAccountNested"}],"description":"The data source account for this statement. Only available after parsing and enrichment has completed, otherwise null.","nullable":true},"exclude":{"description":"True if the statement should be excluded from processing","type":"boolean"},"invalid_transaction_partials":{"items":{"$ref":"#/components/schemas/PdfPatchTransaction"},"type":"array"},"reconciliation_method":{"description":"The ladder check that set this statement's verdict: `start_and_end_balance`, `running_balance`, `summary_derived`, `total_debits_credits`, or `zero_balances`. A reviewer can restamp the PDF without changing this value; `human` applies only at PDF level. Use the PDF-level `reconciliation_method` for the document verdict. Null means no ladder check decided the statement verdict.","enum":["start_and_end_balance","summary_derived","running_balance","total_debits_credits","zero_balances","human",null],"nullable":true},"reconciliation_status":{"description":"The reconciliation ladder's verdict for this statement: `reconciled` means a check passed, `not_possible` means no check could decide, and `failed` means a check failed. A reviewer can restamp the PDF without changing this value. Use the PDF-level `reconciliation_status` as the document verdict. Null means the stored parser output has no ladder verdict.","enum":["failed","not_possible","reconciled",null],"nullable":true,"type":"string"},"summary":{"$ref":"#/components/schemas/MoneyThumbStatementSummary"},"transaction_partials":{"items":{"$ref":"#/components/schemas/PdfTransaction"},"type":"array"}},"type":"object"},"PdfStatementPatchSchema":{"properties":{"exclude":{"description":"True if the statement should be excluded from processing","type":"boolean"},"index":{"description":"The index of the statement in the pdf to patch","type":"integer"},"summary":{"$ref":"#/components/schemas/PdfPatchStatementSummary"},"transactions":{"description":"The full list of transactions that will be used to override the extracted transactions for the specified statement","items":{"$ref":"#/components/schemas/PdfPatchTransaction"},"type":"array"}},"required":["index","transactions"],"type":"object"},"PdfTransaction":{"properties":{"amount":{"type":"number"},"balance":{"type":"number"},"bounds":{"allOf":[{"$ref":"#/components/schemas/MoneyThumbTransactionBounds"}],"nullable":true},"currency":{"nullable":true,"type":"string"},"description":{"type":"string"},"ocr_suspect":{"type":"boolean"},"reference_id":{"type":"string"},"timestamp":{"format":"date-time","type":"string"},"transaction_code":{"type":"string"}},"required":["amount","description","timestamp"],"type":"object"},"PendingMatchSchema":{"additionalProperties":false,"properties":{"candidates":{"items":{"$ref":"#/components/schemas/FunderCandidate"},"readOnly":true,"type":"array"},"index":{"readOnly":true,"type":"integer"},"matching_priority":{"nullable":true,"readOnly":true,"type":"integer"},"policy":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"resolved_funder_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"spreadsheet_name":{"readOnly":true,"type":"string"},"status":{"readOnly":true,"type":"string"}},"type":"object"},"PersonAliasWrite":{"additionalProperties":false,"description":"Any name but the legal one, which is `name`.","properties":{"given":{"description":"Given name; null when the name could not be split.","nullable":true,"type":"string"},"middle":{"description":"Middle name or initial; null when none was stated.","nullable":true,"type":"string"},"prefix":{"description":"Title such as Dr; null when none was stated.","nullable":true,"type":"string"},"suffix":{"description":"Generational suffix such as Jr or III; null when none.","nullable":true,"type":"string"},"surname":{"description":"Surname; null when the name could not be split.","nullable":true,"type":"string"},"type":{"description":"What type of name it is: `legal` is the name a source answers with, and `aka` a further spelling the same source holds for the person. `maiden` and `former` are not stated by any source read today.","enum":["legal","aka","maiden","former"]}},"type":"object"},"PersonName":{"properties":{"given":{"description":"Given name; null when the name could not be split.","nullable":true,"type":"string"},"middle":{"description":"Middle name or initial; null when none was stated.","nullable":true,"type":"string"},"prefix":{"description":"Title such as Dr; null when none was stated.","nullable":true,"type":"string"},"raw":{"description":"The name exactly as the source wrote it.","type":"string"},"suffix":{"description":"Generational suffix such as Jr or III; null when none.","nullable":true,"type":"string"},"surname":{"description":"Surname; null when the name could not be split.","nullable":true,"type":"string"},"type":{"description":"What type of name it is: `legal` is the name a source answers with, and `aka` a further spelling the same source holds for the person. `maiden` and `former` are not stated by any source read today.","enum":["legal","aka","maiden","former"]}},"type":"object"},"PersonNameWrite":{"additionalProperties":false,"properties":{"given":{"description":"Given name; null when the name could not be split.","nullable":true,"type":"string"},"middle":{"description":"Middle name or initial; null when none was stated.","nullable":true,"type":"string"},"prefix":{"description":"Title such as Dr; null when none was stated.","nullable":true,"type":"string"},"suffix":{"description":"Generational suffix such as Jr or III; null when none.","nullable":true,"type":"string"},"surname":{"description":"Surname; null when the name could not be split.","nullable":true,"type":"string"}},"type":"object"},"PhoneWrite":{"additionalProperties":false,"properties":{"heron_id":{"description":"The address or phone this states something about, as `GET /end_users/{id}/details` returned it. Omit it to declare a new one.","nullable":true,"type":"string"},"raw":{"description":"The number exactly as the source wrote it.","type":"string"}},"type":"object"},"PlaidAccount":{"properties":{"account_id":{"type":"string"},"balances":{"$ref":"#/components/schemas/PlaidAccountSnapshotBalance"},"historical_balances":{"items":{"$ref":"#/components/schemas/PlaidAccountBalance"},"type":"array"},"holder_category":{"nullable":true,"type":"string"},"mask":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"},"official_name":{"nullable":true,"type":"string"},"owners":{"items":{"$ref":"#/components/schemas/PlaidAccountOwners"},"nullable":true,"type":"array"},"subtype":{"nullable":true,"type":"string"},"transactions":{"items":{"$ref":"#/components/schemas/PlaidTransaction"},"type":"array"},"type":{"nullable":true,"type":"string"}},"required":["account_id","balances","historical_balances","transactions"],"type":"object"},"PlaidAccountBalance":{"properties":{"current":{"type":"number"},"date":{"format":"date","type":"string"},"iso_currency_code":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"}},"type":"object"},"PlaidAccountOwners":{"properties":{"names":{"items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"PlaidAccountSnapshot":{"properties":{"account_id":{"type":"string"},"balances":{"allOf":[{"$ref":"#/components/schemas/PlaidAccountSnapshotBalance"}],"description":"Balance information for the account as an object. This is optional, but if not provided, balance calculations will not be performed for individual transactions.","nullable":true},"holder_category":{"nullable":true,"type":"string"},"institution_name":{"nullable":true,"type":"string"},"mask":{"nullable":true,"type":"string"},"name":{"type":"string"},"official_name":{"nullable":true,"type":"string"},"owners":{"items":{"$ref":"#/components/schemas/PlaidAccountOwners"},"nullable":true,"type":"array"},"subtype":{"type":"string"},"type":{"type":"string"}},"type":"object"},"PlaidAccountSnapshotBalance":{"properties":{"available":{"nullable":true,"type":"number"},"current":{"nullable":true,"type":"number"},"iso_currency_code":{"type":"string"},"limit":{"nullable":true,"type":"number"}},"type":"object"},"PlaidAssetReport":{"properties":{"date_generated":{"format":"date-time","type":"string"},"days_requested":{"type":"integer"},"items":{"items":{"$ref":"#/components/schemas/PlaidAssetReportItem"},"type":"array"}},"required":["date_generated","days_requested","items"],"type":"object"},"PlaidAssetReportItem":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/PlaidAccount"},"type":"array"},"institution_name":{"type":"string"}},"required":["accounts","institution_name"],"type":"object"},"PlaidAssetsSchema":{"properties":{"report":{"$ref":"#/components/schemas/PlaidAssetReport"}},"required":["report"],"type":"object"},"PlaidSettings":{"properties":{"account_types_enabled_for_analysis":{"items":{"type":"string"},"type":"array"},"account_types_to_ingest":{"items":{"type":"string"},"type":"array","writeOnly":true},"assets_report_days_to_sync":{"type":"integer"},"auto_enrich_after_sync":{"type":"boolean"},"balance_anchor_field":{"enum":["current","posted"]},"days_to_sync":{"type":"integer"},"owner_types_enabled_for_analysis":{"items":{"enum":["business","personal","unknown"]},"type":"array"},"store_raw_responses":{"type":"boolean"}},"type":"object"},"PlaidTransaction":{"properties":{"account_id":{"type":"string"},"amount":{"type":"number"},"balance":{"type":"number"},"category":{"nullable":true,"type":"string"},"date":{"format":"date","type":"string"},"iso_currency_code":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"merchant_name":{"nullable":true,"type":"string"},"name":{"type":"string"},"pending":{"type":"boolean"},"pending_transaction_id":{"nullable":true,"type":"string"},"timestamp":{"format":"date-time","type":"string"},"transaction_code":{"nullable":true,"type":"string"},"transaction_id":{"type":"string"}},"type":"object"},"PlaidTransactionsSchema":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/PlaidAccountSnapshot"},"type":"array"},"transactions":{"items":{"$ref":"#/components/schemas/PlaidTransaction"},"type":"array"}},"required":["transactions"],"type":"object"},"PnLCategories":{"properties":{"cogs":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"income":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"operating_expenses":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"other_expenses":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"},"other_income":{"additionalProperties":{"description":"A list of example line item labels that map to this category","items":{"type":"string"},"type":"array"},"type":"object"}},"type":"object"},"PnLLineItem":{"properties":{"amount":{"nullable":true,"type":"number"},"category":{"enum":["income","cogs","operating_expenses","other_expenses","other_income",null],"nullable":true,"type":"string"},"id":{"nullable":true,"type":"string"},"label":{"nullable":true,"type":"string"},"row_id":{"nullable":true,"type":"string"},"row_index":{"nullable":true,"type":"integer"},"sub_category":{"nullable":true,"type":"string"}},"type":"object"},"PnLStatementSchema":{"properties":{"basis":{"enum":["accrual","cash","unknown",null],"nullable":true,"type":"string"},"currency":{"nullable":true,"type":"string"},"is_reconciled":{"nullable":true,"type":"boolean"},"reports":{"items":{"$ref":"#/components/schemas/PnlReport"},"nullable":true,"type":"array"}},"type":"object"},"PnLTimePeriod":{"properties":{"column_index":{"nullable":true,"type":"integer"},"end_date":{"format":"date","nullable":true,"type":"string"},"label":{"nullable":true,"type":"string"},"start_date":{"format":"date","nullable":true,"type":"string"},"time_interval":{"enum":["year_end","quarter","month","interim_one_off",null],"nullable":true,"type":"string"}},"type":"object"},"PnLTotalGroup":{"properties":{"gross_profit":{"nullable":true,"type":"number"},"net_operating_profit":{"nullable":true,"type":"number"},"net_other_profit":{"nullable":true,"type":"number"},"net_profit":{"nullable":true,"type":"number"},"total_cogs":{"nullable":true,"type":"number"},"total_operating_expenses":{"nullable":true,"type":"number"},"total_other_expenses":{"nullable":true,"type":"number"},"total_other_income":{"nullable":true,"type":"number"},"total_revenue":{"nullable":true,"type":"number"}},"type":"object"},"PnlMetric":{"properties":{"confidence":{"description":"Amount weighted confidence for the metric, based on the confidene associated with category labels of related transactions","nullable":true,"type":"number"},"indent":{"description":"Indentation level for formatting purposes","type":"integer"},"is_ratio":{"description":"Whether the metric is a ratio or not","type":"boolean"},"name":{"description":"Name of metric","type":"string"},"values":{"description":"The list of values ordered according to date","items":{"nullable":true,"type":"number"},"type":"array"}},"type":"object"},"PnlMetricFractionTerm":{"properties":{"labels":{"description":"List of category labels associated with the fraction term","items":{"type":"string"},"type":"array"},"sections":{"description":"List of section slugs associated with the fraction term","items":{"type":"string"},"type":"array"}},"type":"object"},"PnlMetricLayout":{"properties":{"denominator":{"allOf":[{"$ref":"#/components/schemas/PnlMetricFractionTerm"}],"description":"If the metric is a ratio, the denominator of the metric; otherwise this is just 1","nullable":true},"indent":{"description":"Indentation level for formatting purposes","type":"integer"},"is_growth":{"description":"If true, calculates the % growth in the metric over time","type":"boolean"},"name":{"description":"Name of metric","type":"string"},"numerator":{"allOf":[{"$ref":"#/components/schemas/PnlMetricFractionTerm"}],"description":"The numerator of the metric"}},"type":"object"},"PnlReport":{"properties":{"extracted_totals":{"allOf":[{"$ref":"#/components/schemas/PnLTotalGroup"}],"nullable":true},"is_reconciled":{"nullable":true,"type":"boolean"},"line_items":{"items":{"$ref":"#/components/schemas/PnLLineItem"},"nullable":true,"type":"array"},"summed_totals":{"allOf":[{"$ref":"#/components/schemas/PnLTotalGroup"}],"nullable":true},"time_period":{"allOf":[{"$ref":"#/components/schemas/PnLTimePeriod"}],"nullable":true}},"type":"object"},"PnlSection":{"properties":{"metrics":{"description":"Ordered list of P&L metrics","items":{"$ref":"#/components/schemas/PnlMetric"},"type":"array"},"name":{"description":"Name of P&L section, e.g,. Operating Expenses","type":"string"},"slug":{"description":"Slugified version of the name","type":"string"}},"type":"object"},"PnlSectionLayout":{"properties":{"labels":{"description":"The category labels associated with the section","items":{"type":"string"},"type":"array"},"metrics":{"description":"An ordered list of metric layouts","items":{"$ref":"#/components/schemas/PnlMetricLayout"},"type":"array"},"name":{"description":"Name of P&L section, e.g,. Operating Expenses","type":"string"},"slug":{"description":"Slugified version of the name","type":"string"}},"type":"object"},"PolicyBranch":{"properties":{"checks":{"items":{"$ref":"#/components/schemas/Check"},"type":"array"},"condition":{"allOf":[{"$ref":"#/components/schemas/Check"}],"description":"Selects this branch when it passes. Branches are tried in order and the first match runs; a condition that fails or is missing data does not match."},"heron_id":{"description":"Stable across renames; omit for a new branch and one is minted","nullable":true,"type":"string"},"name":{"type":"string"}},"required":["condition","name"],"type":"object"},"PolicyClaim":{"properties":{"claim_description":{"description":"A detailed description of the nature of the claim and cause of loss, if applicable and different to the claim_summary.","nullable":true,"type":"string"},"claim_number":{"description":"The unique identifier assigned to the claim","nullable":true,"type":"string"},"claim_summary":{"description":"A brief description of the nature of the claim (e.g., property damage, bodily injury)","nullable":true,"type":"string"},"date_closed":{"description":"The date when the claim was closed","format":"date","nullable":true,"type":"string"},"date_of_loss":{"description":"The date when the loss on the claim happened in YYYY-MM-DD format","format":"date","nullable":true,"type":"string"},"date_reported":{"description":"The date when the claim was reported to the insurer in YYYY-MM-DD format","format":"date","nullable":true,"type":"string"},"losses":{"description":"A list of losses associated with this claim","items":{"$ref":"#/components/schemas/PolicyLoss"},"nullable":true,"type":"array"}},"type":"object"},"PolicyDefinition":{"properties":{"policy_sections":{"items":{"$ref":"#/components/schemas/PolicyVersionSection"},"type":"array"}},"required":["policy_sections"],"type":"object"},"PolicyEvaluationResult":{"properties":{"policy_heron_id":{"description":"Heron ID of the policy that was evaluated","type":"string"},"policy_name":{"description":"Name of the policy that was evaluated","type":"string"},"result":{"description":"Result of the policy evaluation","enum":["passed","failed","review_required","missing_data","execution_error","skipped"]},"use_case":{"description":"Use case of the policy; null only for evaluations predating the backfill","enum":["background_check","cashflow",null],"nullable":true}},"type":"object"},"PolicyEvaluationSchema":{"properties":{"branch":{"allOf":[{"$ref":"#/components/schemas/EvaluatedBranch"}],"description":"The branch the deal reached - the first whose condition passed, else the default, or one whose condition can't be evaluated (condition_unavailable: true). Null for a section with no branches (only shared checks), one not yet evaluated, or no match with no default","nullable":true,"readOnly":true},"condition_evaluations":{"description":"The branch conditions evaluated, in order, up to the one that matched. They choose the branch and never fail the section. Empty for a section without branches","items":{"$ref":"#/components/schemas/ConditionEvaluation"},"readOnly":true,"type":"array"},"decision_time_seconds":{"description":"Seconds from intake to decision, measured across the workflow run that produced this evaluation. Null unless that run completed - still running, failed, a dry run, or evaluated outside a workflow. A restarted deal is timed from the restart","nullable":true,"readOnly":true,"type":"number"},"failed_checks":{"items":{"$ref":"#/components/schemas/CheckEvaluation"},"type":"array"},"missing_data_checks":{"items":{"$ref":"#/components/schemas/CheckEvaluation"},"type":"array"},"pass_status":{"description":"Where the evaluation pass this row belongs to has got to. Null when the deal was evaluated outside a workflow, or by a policy with no active version","enum":["in_progress","completed","failed",null],"nullable":true,"readOnly":true},"passed_checks":{"items":{"$ref":"#/components/schemas/CheckEvaluation"},"type":"array"},"policy":{"$ref":"#/components/schemas/PolicySchema"},"policy_version":{"nullable":true,"readOnly":true,"type":"integer"},"result":{"description":"The section's verdict. Null when the evaluation pass has not decided this section yet - read it with `pass_status`, which is `in_progress` for those rows","enum":["passed","failed","review_required","missing_data","execution_error","skipped",null],"nullable":true}},"type":"object"},"PolicyLoss":{"properties":{"claimant_name":{"description":"The name of the claimant for the loss","nullable":true,"type":"string"},"claims_examiner":{"description":"The name of the claims examiner for this loss event. Also known as the 'Handler' or 'Adjuster' for the loss.","nullable":true,"type":"string"},"expense_paid":{"description":"The absolute amount already paid out for expenses related to the loss (e.g. legal fees, investigation costs). Also called 'Paid Fees', 'Paid ALAE (Allocated loss adjustment expenses)', 'Payment Expense(s)'","nullable":true,"type":"number"},"expense_reserve":{"description":"The absolute amount reserved specifically for expenses related to the loss (e.g. legal fees, investigation costs). Also called 'Reserve ALAE (Allocated loss adjustment expenses)', 'Outstanding Expense(s)'","nullable":true,"type":"number"},"loss_paid":{"description":"The absolute amount paid for the loss itself (excluding expenses). Also called 'Paid Loss', 'Indemnity Paid', 'Payment Loss'","nullable":true,"type":"number"},"loss_reserve":{"description":"The absolute amount reserved for the loss itself (excluding expenses). Also called 'Reserve Loss', 'Indemnity Reserve', 'Outstanding Loss'","nullable":true,"type":"number"},"loss_type":{"description":"The loss type for this event. E.g. AL (Auto Liability), PD (Property Damage), BI (Bodily Injury), UM/UIM (Uninsured/Underinsured Motorist), SLL (Single Limit Liability) etc.","nullable":true,"type":"string"},"status":{"description":"The current status of the loss event","enum":["Open","Closed","Denied","Pending"],"nullable":true,"type":"string"},"total_incurred":{"description":"The absolute amount incurred by this loss after recoveries (only include this if it appears in the document, do not attempt to calculate it). Also called 'Total Net Payment' or 'Incurred Total'","nullable":true,"type":"number"},"total_recovered":{"description":"The absolute amount recovered from third parties or other insurers for the loss. Sometimes also called 'Total Collected' when used in the context of an insurance loss run. Also called 'Recovery'","nullable":true,"type":"number"}},"type":"object"},"PolicySchema":{"properties":{"checks":{"items":{"$ref":"#/components/schemas/Check"},"type":"array"},"display_order":{"nullable":true,"type":"integer"},"heron_id":{"type":"string"},"name":{"type":"string"},"use_case":{"enum":["background_check","cashflow"]}},"required":["heron_id","name"],"type":"object"},"PolicyVersionBacktestStatus":{"properties":{"backtest_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"deal_count":{"description":"Deals the backtest covered","nullable":true,"readOnly":true,"type":"integer"},"finished_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"flipped_deal_count":{"description":"Deals whose outcome changed, null unless the run completed","nullable":true,"readOnly":true,"type":"integer"},"run_status":{"description":"Status of this version's latest backtest, null if it has never been backtested","enum":["pending","running","complete","failed",null],"nullable":true,"readOnly":true},"stale":{"description":"The version was edited after that backtest was asked for, so re-run before publishing","readOnly":true,"type":"boolean"}},"type":"object"},"PolicyVersionCreateSchema":{"properties":{"change_description":{"maxLength":255,"nullable":true,"type":"string"}},"type":"object"},"PolicyVersionSchema":{"properties":{"author_email":{"description":"Email of whoever last acted on this version: the drafter while it is a draft, the publisher once published","readOnly":true,"type":"string"},"backtest_status":{"allOf":[{"$ref":"#/components/schemas/PolicyVersionBacktestStatus"}],"readOnly":true},"change_description":{"description":"What changed in this version","nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"last_edited_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"policy_definition":{"allOf":[{"$ref":"#/components/schemas/PolicyDefinition"}],"readOnly":true},"published_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["draft","active","archived"],"readOnly":true},"version":{"description":"Version number, unique per account","readOnly":true,"type":"integer"}},"type":"object"},"PolicyVersionSection":{"properties":{"branches":{"description":"Ordered routes through the section; the section's own checks run on every route","items":{"$ref":"#/components/schemas/PolicyBranch"},"type":"array"},"checks":{"items":{"$ref":"#/components/schemas/Check"},"type":"array"},"default_branch":{"allOf":[{"$ref":"#/components/schemas/DefaultPolicyBranch"}],"description":"Runs when no branch's condition passes","nullable":true},"display_order":{"nullable":true,"type":"integer"},"heron_id":{"nullable":true,"type":"string"},"name":{"type":"string"},"use_case":{"enum":["background_check","cashflow"]}},"required":["name"],"type":"object"},"PolicyVersionSummarySchema":{"properties":{"author_email":{"description":"Email of whoever last acted on this version: the drafter while it is a draft, the publisher once published","readOnly":true,"type":"string"},"change_description":{"description":"What changed in this version","nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"last_edited_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"published_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["draft","active","archived"],"readOnly":true},"version":{"description":"Version number, unique per account","readOnly":true,"type":"integer"}},"type":"object"},"PolicyVersionUpdateSchema":{"properties":{"change_description":{"maxLength":255,"nullable":true,"type":"string"},"policy_definition":{"allOf":[{"$ref":"#/components/schemas/PolicyDefinition"}],"nullable":true}},"type":"object"},"PositionInflowMetrics":{"properties":{"count":{"type":"integer"},"max_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"max_timestamp":{"format":"date-time","nullable":true,"type":"string"},"min_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"min_timestamp":{"format":"date-time","nullable":true,"type":"string"},"total_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true}},"type":"object"},"PositionOutflowMetrics":{"properties":{"changed_in_last_90_days":{"type":"boolean"},"confidence_reasons":{"description":"Machine-readable reasons for the estimated confidence band","items":{"type":"string"},"type":"array"},"count":{"type":"integer"},"duration_days":{"nullable":true,"type":"integer"},"estimated_confidence":{"description":"Confidence band for outflow estimates: high, medium, low, or none","enum":["high","medium","low","none",null],"nullable":true,"type":"string"},"estimated_monthly_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Expected monthly repayment. An MCA with a regular cadence: the latest payment times the payments that cadence makes in a month. A line of credit, a revenue share, or an MCA with no regular cadence: the repayments in the 30 days ending where the paying accounts' bank data ends. An open MCA with no repayment in that window reports its latest payment","nullable":true},"estimated_remaining_balance":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"estimated_right_to_receive_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"fallback_estimated_monthly_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"Monthly fallback amount using the latest repayment for low and medium confidence estimates","nullable":true},"frequency":{"enum":["not_enough_data","same_day","irregular","daily","weekly","biweekly","monthly","quarterly","annually","weekday","twice_weekly",null],"nullable":true,"type":"string"},"has_repayment_modifications":{"type":"boolean"},"latest_estimated_monthly_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"description":"A regular-cadence MCA: the latest repayment times payments_per_month. A line of credit, a revenue share, or an MCA with no regular cadence: the same window total as estimated_monthly_amount","nullable":true},"latest_repayment_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"latest_repayment_frequency":{"enum":["not_enough_data","same_day","irregular","daily","weekly","biweekly","monthly","quarterly","annually","weekday","twice_weekly",null],"nullable":true,"type":"string"},"max_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"max_timestamp":{"format":"date-time","nullable":true,"type":"string"},"mean_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"mean_interval_days":{"nullable":true,"type":"number"},"min_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"min_timestamp":{"format":"date-time","nullable":true,"type":"string"},"mode_interval_days":{"nullable":true,"type":"integer"},"payments_per_month":{"description":"Payments a month. A regular-cadence MCA: the payments its cadence makes in a month. A line of credit, a revenue share, or an MCA with no regular cadence: the repayment days counted in the window estimated_monthly_amount sums","nullable":true,"type":"number"},"remaining_repayment_duration_days":{"nullable":true,"type":"integer"},"std_dev_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"total_amount":{"allOf":[{"$ref":"#/components/schemas/Money"}],"nullable":true},"total_expected_duration_days":{"nullable":true,"type":"integer"},"total_expected_payments_to_date":{"nullable":true,"type":"integer"}},"type":"object"},"PositionSummary":{"properties":{"collecting_accounts":{"description":"Every account a repayment was debited from, most-collected first","items":{"$ref":"#/components/schemas/CollectingAccount"},"type":"array"},"funder_holdback_percentage":{"description":"Funder expected monthly repayments divided by average monthly true revenue, as a percentage","nullable":true,"type":"number"},"group":{"nullable":true,"type":"string"},"has_possible_payoff":{"description":"A lump was left out of the estimate but lacks the corroboration needed to call the position paid off","type":"boolean"},"heron_id":{"type":"string"},"holdback_percentage":{"description":"Position expected monthly repayment divided by average monthly true revenue, as a percentage","nullable":true,"type":"number"},"inflow_metrics":{"allOf":[{"$ref":"#/components/schemas/PositionInflowMetrics"}],"nullable":true},"investment_transactions":{"description":"Only populated when include_transactions=true is passed on the request","items":{"$ref":"#/components/schemas/PositionTransaction"},"nullable":true,"type":"array"},"is_active":{"type":"boolean"},"is_renewal":{"nullable":true,"type":"boolean"},"llm_summary":{"nullable":true,"type":"string"},"merchant":{"nullable":true,"type":"string"},"missed_payments":{"items":{"format":"date","type":"string"},"nullable":true,"type":"array"},"nsf_fees":{"items":{"$ref":"#/components/schemas/RelatedPayment"},"nullable":true,"type":"array"},"outflow_metrics":{"allOf":[{"$ref":"#/components/schemas/PositionOutflowMetrics"}],"nullable":true},"parent_position_heron_id":{"nullable":true,"type":"string"},"payoffs":{"description":"Payments that settled the position rather than servicing it","items":{"$ref":"#/components/schemas/RelatedPayment"},"nullable":true,"type":"array"},"primary_collecting_account":{"allOf":[{"$ref":"#/components/schemas/CollectingAccount"}],"description":"The account most repayments were debited from. Ties go to the larger total debited, then to the account with the most recent repayment. Null when no repayment is linked to an account.","nullable":true},"product_type":{"enum":["mca","line_of_credit","reverse_consolidation","revenue_share",null],"nullable":true,"type":"string"},"repayment_transactions":{"description":"Only populated when include_transactions=true is passed on the request","items":{"$ref":"#/components/schemas/PositionTransaction"},"nullable":true,"type":"array"},"reversal_transactions":{"description":"Only populated when include_transactions=true is passed on the request","items":{"$ref":"#/components/schemas/PositionTransaction"},"nullable":true,"type":"array"},"reversals":{"items":{"$ref":"#/components/schemas/RelatedPayment"},"nullable":true,"type":"array"},"servicing_fees":{"items":{"$ref":"#/components/schemas/RelatedPayment"},"nullable":true,"type":"array"},"status":{"enum":["none","active","inactive","defaulted","potential_default","renewal_active","renewal_inactive","new_position","likely_paid_off"],"type":"string"},"stop_payments":{"items":{"$ref":"#/components/schemas/RelatedPayment"},"nullable":true,"type":"array"}},"type":"object"},"PositionTransaction":{"properties":{"account_owner_name":{"description":"Name the bank statement lists as the owner of the account the money was collected from","example":"ACME TRADING LLC","nullable":true,"type":"string"},"amount":{"$ref":"#/components/schemas/Money"},"description":{"type":"string"},"display_account_id":{"description":"Human-readable label for the bank account the money was collected from: the last four digits of the account number (falling back to the account title). Not unique and not a key.","example":"7505","nullable":true,"type":"string"},"heron_id":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}},"type":"object"},"PositionTransactions":{"properties":{"investment_transactions":{"items":{"$ref":"#/components/schemas/PositionTransaction"},"type":"array"},"position_heron_id":{"type":"string"},"repayment_transactions":{"items":{"$ref":"#/components/schemas/PositionTransaction"},"type":"array"},"reversal_transactions":{"items":{"$ref":"#/components/schemas/PositionTransaction"},"type":"array"}},"type":"object"},"PostIsoApplicationBase64Schema":{"properties":{"file_base64":{"description":"The base64 encoded string of the file","example":"base64_encoded_string","pattern":"^data\\:\\w+\\/\\w+\\;base64\\,","type":"string"},"filename":{"description":"The original filename of the ISO application form","example":"iso_app.pdf","type":"string"},"reference_id":{"description":"A reference id for the file","example":"your-file-id","nullable":true,"type":"string"}},"required":["file_base64","filename"],"type":"object"},"PostProcessorConfigSchema":{"properties":{"description":{"nullable":true,"type":"string"},"inputs":{"additionalProperties":{},"nullable":true,"type":"object"},"name":{"type":"string"}},"required":["name"],"type":"object"},"PostProcessorsResponseSchema":{"properties":{"post_processors":{"items":{"$ref":"#/components/schemas/PostProcessorConfigSchema"},"type":"array"}},"required":["post_processors"],"type":"object"},"ProfileAddress":{"properties":{"address":{"description":"Reported address.","nullable":true,"type":"string"},"city_state":{"description":"Reported city and state.","nullable":true,"type":"string"},"first_reported_date":{"description":"First reported date; null when unavailable.","format":"date","nullable":true,"type":"string"},"is_po_box":{"description":"Whether this specific address is classified as a PO Box.","type":"boolean"},"last_reported_date":{"description":"Last reported date; null when unavailable.","format":"date","nullable":true,"type":"string"},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"}},"type":"object"},"ProfileEmail":{"properties":{"email":{"description":"Email address.","nullable":true,"type":"string"},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"}},"type":"object"},"ProfilePhone":{"properties":{"carrier":{"description":"Phone carrier; null when unavailable.","nullable":true,"type":"string"},"number":{"description":"Phone number.","nullable":true,"type":"string"},"source":{"description":"Source that supplied the record.","nullable":true,"type":"string"},"type":{"description":"Source-provided phone type.","nullable":true,"type":"string"}},"type":"object"},"ProfileSsnIssuance":{"properties":{"expiration_date":{"description":"SSN issuance expiration date; null when unavailable.","nullable":true,"type":"string"},"issuance_text":{"description":"Source-provided SSN issuance summary.","nullable":true,"type":"string"},"issue_date":{"description":"SSN issuance date; null when unavailable.","nullable":true,"type":"string"},"issue_state":{"description":"State where the SSN was issued; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"ProfitAndLossLayoutSchema":{"properties":{"sections":{"description":"Ordered list of P&L sections","items":{"$ref":"#/components/schemas/PnlSectionLayout"},"type":"array"}},"type":"object"},"ProfitAndLossLayoutUpdateSchema":{"properties":{"category_labels":{"description":"List of category labels to assign to a different section","example":["Postage"],"items":{"type":"string"},"minItems":1,"type":"array"},"section_slug":{"description":"Slug of section to assign labels to","example":"operational_expenses","type":"string"}},"required":["category_labels","section_slug"],"type":"object"},"ProfitAndLossParams":{"properties":{"currency":{"description":"ISO 4217 currency code for balance","enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"},"dates_ascending":{"default":false,"description":"If true, dates are sorted left to right by ascending order. False by default, i.e., by default sorted in descending date order so more recent dates are first","type":"boolean"},"from_date":{"description":"The earliest transaction timestamp date to use","example":"2022-01-01","format":"date","nullable":true,"type":"string"},"to_date":{"description":"The latest transaction timestamp date to use","example":"2022-01-31","format":"date","nullable":true,"type":"string"}},"type":"object"},"ProfitAndLossSchema":{"properties":{"dates":{"description":"Ordered list of dates representing the columns of the P&L table","items":{"format":"date","type":"string"},"type":"array"},"sections":{"description":"Ordered list of P&L sections","items":{"$ref":"#/components/schemas/PnlSection"},"type":"array"}},"type":"object"},"ProgressPolicySchema":{"properties":{"end_user_heron_id":{"type":"string"}},"required":["end_user_heron_id"],"type":"object"},"PropertyRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"absentee_indicator":{"description":"Source-provided absentee-owner indicator; null when unavailable.","nullable":true,"type":"string"},"attorney_name":{"description":"Attorney named on the foreclosure filing; null when unavailable.","nullable":true,"type":"string"},"body_type":{"description":"Source-provided vehicle body type; null when unavailable.","nullable":true,"type":"string"},"building_square_ft":{"description":"Building area in square feet; null when unavailable.","nullable":true,"type":"integer"},"case_number":{"description":"Foreclosure case reference; null when unavailable.","nullable":true,"type":"string"},"county":{"description":"County where the property is located; null when unavailable.","nullable":true,"type":"string"},"deed_type":{"description":"Source-provided deed type; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Foreclosure filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_source":{"description":"Foreclosure filing source: lis_pendens or judgment; absent on other rows.","enum":["lis_pendens","judgment",null],"nullable":true,"type":"string"},"filing_type":{"description":"Source-provided foreclosure filing type; null when unavailable.","nullable":true,"type":"string"},"land_use":{"description":"Source-provided land use; null when unavailable.","nullable":true,"type":"string"},"legal_description":{"description":"Legal property description; null when unavailable.","nullable":true,"type":"string"},"lender_name":{"description":"Lender named on the record; null when unavailable.","nullable":true,"type":"string"},"make":{"description":"Vehicle make; null when unavailable.","nullable":true,"type":"string"},"model":{"description":"Vehicle model; null when unavailable.","nullable":true,"type":"string"},"model_year":{"description":"Vehicle model year; null when unavailable.","nullable":true,"type":"integer"},"mortgage_amount":{"description":"Recorded mortgage amount as a decimal string; null when unavailable.","nullable":true,"type":"number"},"mortgage_due_date":{"description":"Mortgage due date; null when unavailable.","format":"date","nullable":true,"type":"string"},"mortgage_type":{"description":"Source-provided mortgage type; null when unavailable.","nullable":true,"type":"string"},"original_loan_amount":{"description":"Original loan amount as a decimal string; null when unavailable.","nullable":true,"type":"number"},"original_loan_date":{"description":"Original loan date; null when unavailable.","format":"date","nullable":true,"type":"string"},"owner_is_corporate":{"description":"Whether the listed owner is a business; null when unavailable.","nullable":true,"type":"boolean"},"owner_name":{"description":"Owner name listed on the record; null when unavailable.","nullable":true,"type":"string"},"owners":{"description":"Owners listed on the vehicle record.","items":{"$ref":"#/components/schemas/VehicleOwnerSchema"},"type":"array"},"parcel_number":{"description":"Parcel reference; null when unavailable.","nullable":true,"type":"string"},"plaintiff_name":{"description":"Plaintiff named on the foreclosure filing; null when unavailable.","nullable":true,"type":"string"},"plate_expiration_date":{"description":"Plate expiration date; null when unavailable.","format":"date","nullable":true,"type":"string"},"plate_number":{"description":"Vehicle registration plate; null when unavailable.","nullable":true,"type":"string"},"plate_state":{"description":"State that issued the plate; null when unavailable.","nullable":true,"type":"string"},"plate_type":{"description":"Source-provided plate type; null when unavailable.","nullable":true,"type":"string"},"property_address":{"description":"Property address named on the record; null when unavailable.","nullable":true,"type":"string"},"record_group":{"description":"Which record list this row came from. It is the only field separating a vehicle row from a real-time vehicle row.","enum":["pre_foreclosure","real_property","vehicle","real_time_vehicle","pre_foreclosure_at_address","property_at_address","vehicle_at_address"],"type":"string"},"record_type":{"description":"Property record class: deed or tax; absent on foreclosure and vehicle rows.","enum":["deed","tax",null],"nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"sale_date":{"description":"Recorded sale date; null when unavailable.","format":"date","nullable":true,"type":"string"},"sale_price":{"description":"Recorded sale price as a decimal string; null when unavailable.","nullable":true,"type":"number"},"seller_name":{"description":"Seller name listed on the deed; null when unavailable.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source":{"description":"Source that supplied the record; null when unavailable.","nullable":true,"type":"string"},"subject_address":{"description":"Applicant address the record was found under; present only on the at-address record groups and absent on the others. Identifies the address that was searched, not proof of ownership.","nullable":true,"type":"string"},"title_company":{"description":"Title company listed on the record; null when unavailable.","nullable":true,"type":"string"},"vin":{"description":"Vehicle identification number; null when unavailable.","nullable":true,"type":"string"}},"required":["record_group"],"type":"object"},"QueryReportTab":{"properties":{"tab_name":{"type":"string"},"widgets":{"items":{"$ref":"#/components/schemas/QueryReportWidget"},"type":"array"}},"required":["tab_name","widgets"],"type":"object"},"QueryReportTabGroup":{"properties":{"tab_group":{"type":"string"},"tabs":{"items":{"$ref":"#/components/schemas/QueryReportTab"},"type":"array"}},"required":["tab_group","tabs"],"type":"object"},"QueryReportWidget":{"properties":{"description":{"nullable":true,"type":"string"},"query_name":{"type":"string"},"title":{"type":"string"}},"required":["query_name","title"],"type":"object"},"Recommendation":{"additionalProperties":false,"properties":{"blockers":{"items":{"$ref":"#/components/schemas/RecommendationBlocker"},"readOnly":true,"type":"array"},"deal":{"allOf":[{"$ref":"#/components/schemas/DealRead"}],"nullable":true,"readOnly":true},"odds":{"nullable":true,"readOnly":true,"type":"number"},"overridden_checks":{"items":{"type":"string"},"readOnly":true,"type":"array"},"rank":{"nullable":true,"readOnly":true,"type":"integer"},"reason":{"nullable":true,"readOnly":true,"type":"string"},"signals":{"items":{"$ref":"#/components/schemas/RecommendationSignal"},"readOnly":true,"type":"array"},"source":{"readOnly":true,"type":"string"}},"type":"object"},"RecommendationBlocker":{"additionalProperties":false,"properties":{"code":{"readOnly":true,"type":"string"},"text":{"readOnly":true,"type":"string"}},"type":"object"},"RecommendationSignal":{"additionalProperties":false,"properties":{"comparison":{"nullable":true,"readOnly":true,"type":"string"},"display":{"readOnly":true,"type":"string"},"effect":{"readOnly":true,"type":"string"},"feature":{"readOnly":true,"type":"string"},"funder_specific":{"readOnly":true,"type":"boolean"},"label":{"readOnly":true,"type":"string"},"value":{"nullable":true,"readOnly":true}},"type":"object"},"RefreshAssetsReportsResponseSchema":{"properties":{"failed_links":{"description":"Array of item_ids that failed to refresh","example":["item_123","item_456"],"items":{"type":"string"},"type":"array"},"processed_links":{"description":"Number of links processed for refresh","example":2,"type":"integer"}},"required":["failed_links","processed_links"],"type":"object"},"RelatedPayment":{"properties":{"amount":{"type":"number"},"date":{"format":"date","type":"string"},"merchant":{"nullable":true,"type":"string"}},"type":"object"},"ReorderEndUserEntitiesSchema":{"properties":{"ordered_entity_heron_ids":{"items":{"type":"string"},"type":"array"}},"required":["ordered_entity_heron_ids"],"type":"object"},"ReorderEndUserEntityAttributesSchema":{"properties":{"ordered_attribute_heron_ids":{"items":{"type":"string"},"type":"array"}},"required":["ordered_attribute_heron_ids"],"type":"object"},"ResolvePendingMatchRequestSchema":{"additionalProperties":false,"properties":{"funder_heron_id":{"description":"Heron ID of the funder to match with","type":"string"}},"required":["funder_heron_id"],"type":"object"},"ResolvedAddress":{"description":"One place, with the source of each of its own fields. Which place it is, the field name says. One place read by two parties reads the same for both, so its sources are its own.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"city":{"description":"Town or city; null when the address could not be split.","nullable":true,"type":"string"},"country":{"description":"Country of the address; null when no state was read.","nullable":true,"type":"string"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"is_po_box":{"description":"True when the address names a PO box rather than a building.","type":"boolean"},"line_1":{"description":"Street and building number; null when unavailable.","nullable":true,"type":"string"},"line_2":{"description":"Flat, unit or suite; null when none was stated.","nullable":true,"type":"string"},"postcode":{"description":"ZIP code, with its four-digit extension when stated.","nullable":true,"type":"string"},"raw":{"description":"The address exactly as the source wrote it, in one line.","type":"string"},"region":{"description":"State, province or county; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"ResolvedAffiliate":{"description":"Someone linked to the company being underwritten or to one of its owners, who is neither of those: an owner no form declared, a company an owner works at, a named contact. Someone a record names and nothing else is not here; the record states them inside the link that reaches them, and an entry here would state the same party a second time.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"billing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company is billed.","nullable":true},"business_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company is.","nullable":true},"business_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A company's line.","nullable":true},"country_of_residence":{"description":"Country of residence. No source read today states one, so null.","nullable":true,"type":"string"},"date_of_birth":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"Read as parts, because a source can state a year and a month with no day. Null unless a source stated one. Only the application does today, so in practice only a person the deal applied with carries one.","nullable":true},"deceased_on":{"description":"Date of death where a source states one; null under the same limit as above.","format":"date","nullable":true,"type":"string"},"emails":{"description":"Every email address every source stated.","items":{"$ref":"#/components/schemas/SourcedEmail"},"type":"array"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"home_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a person lives.","nullable":true},"home_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A person's home line.","nullable":true},"identifiers":{"description":"Every identifier every source stated, each with the authority's answer on it.","items":{"$ref":"#/components/schemas/SourcedCompanyId"},"type":"array"},"is_deceased":{"description":"Whether a source records this person as deceased. Null until the parser surfaces the subject's own profile; it reads the indicator for an associate only.","nullable":true,"type":"boolean"},"is_dissolved":{"description":"True when no linked filing that states a standing is still active. When no linked filing states one, the highest-precedence source's company-level standing answers instead. A company can be revoked in one state and active in the state that formed it, so one dissolved filing does not dissolve the company. Null when no source states a standing, which is not good standing.","nullable":true,"type":"boolean"},"mailing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company's post goes.","nullable":true},"mobile_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A person's mobile line.","nullable":true},"name":{"description":"The one spelling to show for this party.","nullable":true,"type":"string"},"national_ids":{"description":"Every identifier every source stated.","items":{"$ref":"#/components/schemas/SourcedNationalId"},"type":"array"},"nationalities":{"description":"Every nationality a source stated.","items":{"$ref":"#/components/schemas/SourcedNationality"},"type":"array"},"registered_office":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"A company's address on the state register.","nullable":true},"relationships":{"description":"How this party stands to the company being underwritten, or to one of its owners.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"started_on":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"When the company started trading, read as parts because a source can state a year alone. Not the date it was formed: a business often trades for years before the entity that applies is registered, and the formation date is `formed_on` on its corporate filing.","nullable":true},"state_of_incorporation":{"description":"The state or territory where the company was incorporated. Recognised US state names and codes use one uppercase state name; null when no source states one.","nullable":true,"type":"string"},"subject_type":{"description":"Which of the submission's own subjects this row is, so you can tell them apart from everything the searches turned up around them. Set differently for the two, because only one of them is certain.\n\n`business`: the company being underwritten. A deal has one, and every source is searched for it, so a company row carries this even when no application form named one and however differently a registry or a directory spells the name.\n\n`owner`: a person the submission declared as an owner, which only an application form states. A person a report returned is null even when that report searched under an owner, because a relative or a namesake found by that search is a finding and not a declared owner. Several rows can hold `owner`, since a submission names any number of them, and the order the owners are returned in answers which one leads.\n\nNull: every other row. For people that is the usual case, covering relatives, court parties and officers of other companies. For a company it means one reached through a finding, such as another company an owner holds an office in.","enum":["owner","business",null],"nullable":true},"type_of_entity":{"description":"The company's legal form: llc, inc, corp, lp, llp, partnership, sole_proprietor, ltd, plc or unknown. The deal's own word for it leads, as it does for the names, so an application form stating one outranks a registry; `reported_by` names what every source said, and each corporate filing states its own `legal_form`. `unknown` when no source states one.","enum":["llc","inc","corp","lp","llp","partnership","sole_proprietor","ltd","plc","co","pc","pllc","unknown"]},"websites":{"description":"Every website every source stated.","items":{"$ref":"#/components/schemas/SourcedWebsite"},"type":"array"}},"type":"object"},"ResolvedArrest":{"description":"One arrest, with one value for each field, most recent first. Never a conviction.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"actual_release_date":{"description":"Date the person was released from custody.","format":"date","nullable":true,"type":"string"},"additional_fields":{"description":"Fields the source reported that have no named home on the record, kept verbatim so nothing it stated is dropped. Rows naming a person, a place or a phone line are dropped rather than carried, because each of those is a thing the arrest links to.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"arrest_agency_raw":{"description":"The agency that made the arrest, as the source named it.","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest itself.","format":"date","nullable":true,"type":"string"},"arrest_location":{"description":"Where the source places the arrest.","nullable":true,"type":"string"},"arrest_time":{"description":"Time of the arrest, in the source's own words.","nullable":true,"type":"string"},"bail_amount":{"description":"Bail set, as a decimal string.","nullable":true,"type":"number"},"booking_date":{"description":"Date the arrest was booked into custody.","format":"date","nullable":true,"type":"string"},"booking_location":{"description":"Where the booking took place.","nullable":true,"type":"string"},"booking_number":{"description":"The number the jail booked the arrest under, as the source wrote it. May be absent even when the source states a case number.","nullable":true,"type":"string"},"booking_time":{"description":"Time of booking, in the source's own words.","nullable":true,"type":"string"},"case_number_raw":{"description":"A case number the source states against the arrest, where available. This is the source's reference, not a link to a criminal-case record. An arrest is not a conviction.","nullable":true,"type":"string"},"categories":{"description":"What kind of offence Heron classifies this as; empty when it maps to none.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"class_of_crime_raw":{"description":"How serious the source called it, in its own words.","nullable":true,"type":"string"},"county_of_crime":{"description":"County the offence is recorded in.","nullable":true,"type":"string"},"court_raw":{"description":"The court the source names against the arrest, where it names one; often absent.","nullable":true,"type":"string"},"crime_date":{"description":"Date of the offence, where it differs from the arrest.","format":"date","nullable":true,"type":"string"},"disposition_raw":{"description":"How the arrest ended, in the source's own words.","nullable":true,"type":"string"},"grade":{"description":"How serious Heron grades it: `felony`, `misdemeanor`, `infraction` or `unknown`. Null when no source stated one, which is not the same as `unknown`.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown",null],"nullable":true},"is_dismissed":{"description":"True when Heron reads the disposition as a dismissal; null when none was stated.","nullable":true,"type":"boolean"},"mugshot_record_id":{"description":"Identifies the mugshot the source holds for this arrest. The image itself is served by its own authenticated route; only the identifier travels here.","nullable":true,"type":"string"},"number_of_counts":{"description":"How many counts the source states.","nullable":true,"type":"integer"},"offense_raw":{"description":"The offence, in the source's own words.","nullable":true,"type":"string"},"record_state":{"description":"The state the arrest was recorded in.","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"risk":{"description":"Risk tier of this record: none, low, medium or high; null when no source stated one.","enum":["none","low","medium","high",null],"nullable":true},"source_document_guid":{"description":"The source's identifier for the document behind this record.","nullable":true,"type":"string"},"source_name":{"description":"Which body's records reported the arrest, such as HENNEPIN COUNTY JAIL.","nullable":true,"type":"string"},"statute":{"description":"The statute the source says was violated.","nullable":true,"type":"string"}},"type":"object"},"ResolvedBankruptcy":{"description":"One bankruptcy, with one value for each field, newest filing first.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"additional_fields":{"description":"Fields the source reported that have no named home on the record, kept verbatim so nothing it stated is dropped. Identity and demographic rows are dropped rather than carried.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"case_details":{"description":"Free text the filing carries about the case.","nullable":true,"type":"string"},"case_link":{"description":"Link to the case on the court's own system.","nullable":true,"type":"string"},"case_title":{"description":"The case name as the court records it.","nullable":true,"type":"string"},"category":{"description":"How the source files the case among its own case types; null when it states none.","nullable":true,"type":"string"},"chapter":{"description":"Bankruptcy chapter number; null when unavailable.","nullable":true,"type":"integer"},"chapter_kind":{"description":"Bankruptcy chapter classification: chapter_7, chapter_11, chapter_12, chapter_13, other, or unknown.","enum":["chapter_7","chapter_11","chapter_12","chapter_13","other","unknown"]},"court":{"description":"The court holding the case.","nullable":true,"type":"string"},"court_location":{"description":"The courthouse named on the case.","nullable":true,"type":"string"},"court_state":{"description":"The state the court sits in.","nullable":true,"type":"string"},"date_closed":{"description":"Date the case closed; null while it is open.","format":"date","nullable":true,"type":"string"},"date_discharged":{"description":"Date the debts were discharged; null when not.","format":"date","nullable":true,"type":"string"},"docket_entries":{"description":"The case docket, oldest entry first. Empty unless a source read the docket, for the same reason as the creditors' meeting.","items":{"$ref":"#/components/schemas/DocketEntry"},"type":"array"},"document_id":{"description":"Court docket reference; null when unavailable.","nullable":true,"type":"string"},"filed_date":{"description":"Case filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_office":{"description":"The filing office from the docket number, which is the district's own division code.","nullable":true,"type":"string"},"is_open":{"description":"True when status_kind is neither discharged nor dismissed.","type":"boolean"},"judge":{"description":"The judge assigned to the case.","nullable":true,"type":"string"},"meeting_341":{"allOf":[{"$ref":"#/components/schemas/Meeting341"}],"description":"The creditors' meeting. Null unless a source read the case docket, because a case search returns the case and not its docket.","nullable":true},"nature_of_suit":{"description":"The nature of suit the filing states.","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"source_document_guid":{"description":"The source's own identifier for the document behind this record, so a reader can quote it back to the source. Null when the source states none.","nullable":true,"type":"string"},"source_name":{"description":"The source's own name for the collection this record came from, kept verbatim.","nullable":true,"type":"string"},"status":{"description":"Bankruptcy status value matching status_kind.","nullable":true,"type":"string"},"status_kind":{"description":"Bankruptcy status classification: filed, discharged, dismissed, or unknown. Discharged and dismissed are closed; filed and unknown are open.","enum":["filed","discharged","dismissed","unknown"]},"total_assets":{"description":"Total scheduled assets as a decimal string; null when the filing does not record them.","nullable":true,"type":"number"},"total_liabilities":{"description":"Total scheduled liabilities as a decimal string; null when the filing does not record them.","nullable":true,"type":"number"}},"type":"object"},"ResolvedBusiness":{"description":"One business the deal's sources named. Where the sources spelled the name differently, this is the spelling to show: the deal's own leads when it stated one.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"aliases":{"description":"Every other name a source stated for this company, in precedence order: a trading name, a former name, a registry's spelling. `name` is the one to show. Empty when they agreed.","items":{"$ref":"#/components/schemas/CompanyName"},"type":"array"},"billing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where the company is billed, stated apart from where it is. Null when none was reported.","nullable":true},"business_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"The company's premises. Null when no source placed it anywhere.","nullable":true},"business_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"The company's line; null when no source reported one.","nullable":true},"emails":{"description":"Every email address every source stated.","items":{"$ref":"#/components/schemas/SourcedEmail"},"type":"array"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"identifiers":{"description":"Every identifier every source stated, each with the authority's answer on it.","items":{"$ref":"#/components/schemas/SourcedCompanyId"},"type":"array"},"is_dissolved":{"description":"True when no linked filing that states a standing is still active. When no linked filing states one, the highest-precedence source's company-level standing answers instead. A company can be revoked in one state and active in the state that formed it, so one dissolved filing does not dissolve the company. Null when no source states a standing, which is not good standing.","nullable":true,"type":"boolean"},"mailing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where the post goes, where that is not the premises. Null when no source stated one.","nullable":true},"name":{"allOf":[{"$ref":"#/components/schemas/CompanyName"}],"description":"The one name to show, with its type. Null when no source stated one.","nullable":true},"other_addresses":{"description":"Every other place a source put this party, which the named address fields chose one of. No span is stated, so this is where a subject has been read, not when. Empty when every place a source stated is already named above.","items":{"$ref":"#/components/schemas/ResolvedAddress"},"type":"array"},"registered_office":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"The address on the state register, which a company filed in one state while it trades in another holds apart from its premises. Null when no registry stated one.","nullable":true},"started_on":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"When the company started trading, read as parts because a source can state a year alone. Not the date it was formed: a business often trades for years before the entity that applies is registered, and the formation date is `formed_on` on its corporate filing.","nullable":true},"state_of_incorporation":{"description":"The state or territory where the company was incorporated. Recognised US state names and codes use one uppercase state name; null when no source states one.","nullable":true,"type":"string"},"subject_type":{"description":"Which of the submission's own subjects this row is, so you can tell them apart from everything the searches turned up around them. Set differently for the two, because only one of them is certain.\n\n`business`: the company being underwritten. A deal has one, and every source is searched for it, so a company row carries this even when no application form named one and however differently a registry or a directory spells the name.\n\n`owner`: a person the submission declared as an owner, which only an application form states. A person a report returned is null even when that report searched under an owner, because a relative or a namesake found by that search is a finding and not a declared owner. Several rows can hold `owner`, since a submission names any number of them, and the order the owners are returned in answers which one leads.\n\nNull: every other row. For people that is the usual case, covering relatives, court parties and officers of other companies. For a company it means one reached through a finding, such as another company an owner holds an office in.","enum":["owner","business",null],"nullable":true},"type_of_entity":{"description":"The company's legal form: llc, inc, corp, lp, llp, partnership, sole_proprietor, ltd, plc or unknown. The deal's own word for it leads, as it does for the names, so an application form stating one outranks a registry; `reported_by` names what every source said, and each corporate filing states its own `legal_form`. `unknown` when no source states one.","enum":["llc","inc","corp","lp","llp","partnership","sole_proprietor","ltd","plc","co","pc","pllc","unknown"]},"websites":{"description":"Every website every source stated.","items":{"$ref":"#/components/schemas/SourcedWebsite"},"type":"array"}},"type":"object"},"ResolvedCorporateFiling":{"description":"One registration of a company with one registry, newest formation first.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"annual_report_file_date":{"description":"Date of the most recent annual report.","format":"date","nullable":true,"type":"string"},"dissolved_on":{"description":"Date the company dissolved. Only a dissolved filing has one, because a registry states the date its status last changed rather than a date of dissolution.","format":"date","nullable":true,"type":"string"},"filing_date":{"description":"Date this filing was made.","format":"date","nullable":true,"type":"string"},"filing_office_name":{"description":"The registry office named on the filing.","nullable":true,"type":"string"},"formed_on":{"description":"Date the company was formed.","format":"date","nullable":true,"type":"string"},"jurisdiction":{"description":"The registry that holds the filing, as a country and a subdivision, such as US-CA. Null when the source names no state, and null when it names one that is not a US state.","nullable":true,"type":"string"},"legal_form":{"description":"The company's legal form: llc, inc, corp, lp, llp, partnership, sole_proprietor, ltd, plc or unknown. Registries word the same form several ways, so this classifies legal_form_raw.","enum":["llc","inc","corp","lp","llp","partnership","sole_proprietor","ltd","plc","co","pc","pllc","unknown"]},"number":{"description":"The registry's identifier for this filing, as the registry writes it. Null when the registry states none, and a filing without a number is never joined to another filing.","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"state_of_incorporation":{"description":"Where the company was formed, which differs from the jurisdiction of this filing when a company registers to trade outside its home state.","nullable":true,"type":"string"},"status":{"description":"The standing of this filing: active, inactive, dissolved, revoked or unknown. `revoked` also covers forfeited, suspended and administratively dissolved. A company can be revoked in one state and active in the state that formed it.","enum":["active","inactive","dissolved","revoked","unknown"]},"status_date":{"description":"Date the registry recorded the current status.","format":"date","nullable":true,"type":"string"},"status_effective_date":{"description":"Date the current status took effect.","format":"date","nullable":true,"type":"string"}},"type":"object"},"ResolvedCreditScore":{"description":"One credit score of this owner, with the source of each field.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"bureau":{"description":"The bureau that produced the score; `unknown` when the source did not identify one.","enum":["equifax","experian","transunion","unknown"]},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"score":{"description":"The numeric score the source reported.","type":"integer"},"score_model":{"description":"The scoring model family; `unknown` when the source did not name one.","enum":["fico","vantagescore","unknown"]},"score_model_raw":{"description":"The scoring model as the source named it; null when the source did not identify one.","nullable":true,"type":"string"},"score_version_raw":{"description":"The scoring model version as the source stated it, such as `8`; null when it gave none.","nullable":true,"type":"string"},"scored_on":{"description":"The date the score was calculated, in ISO 8601 format; null when the source did not report one.","format":"date","nullable":true,"type":"string"}},"required":["score"],"type":"object"},"ResolvedCriminalCase":{"description":"One criminal case, with one value for each field, newest filing first.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"actual_release_date":{"description":"Date the subject was released.","format":"date","nullable":true,"type":"string"},"additional_fields":{"description":"Fields the source reported that have no named home on the record, kept verbatim so nothing it stated is dropped. Identity and demographic rows are dropped rather than carried, so a defendant's date of birth or sex never appears here.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"arrest_agency":{"description":"The agency that made the arrest.","nullable":true,"type":"string"},"arrest_date":{"description":"Date of the arrest that led to the case.","format":"date","nullable":true,"type":"string"},"bail_set_amount":{"description":"Bail set as a decimal string; null when none was set.","nullable":true,"type":"number"},"booking_number":{"description":"The booking number, which links toward an arrest.","nullable":true,"type":"string"},"case_link":{"description":"A link to the case on the court's own system.","nullable":true,"type":"string"},"case_number_raw":{"description":"The number the court filed the case under, as the source wrote it.","nullable":true,"type":"string"},"case_status_date":{"description":"Date that standing was recorded.","format":"date","nullable":true,"type":"string"},"case_status_raw":{"description":"Where the case stands, in the court's own words.","nullable":true,"type":"string"},"case_title":{"description":"How the court captioned the case, such as STATE OF ARIZONA VS PORFIRIO NINO.","nullable":true,"type":"string"},"categories":{"description":"What kind of offending this is, classified by Heron. A case can fall into several.","items":{"enum":["violent","murder_homicide","domestic_violence","burglary","fraud","sex_offense","child_related","fiduciary","animal_cruelty","drug","dui","other"]},"type":"array"},"category":{"description":"`criminal`, `traffic` where the offence is a traffic matter, or `unknown`. Traffic is a criminal case and is kept here, labelled so a policy can set it aside.","enum":["criminal","traffic","unknown"]},"charges":{"description":"Every count charged, each with its own plea, verdict, sentence and outcome. A case that convicts on one count and dismisses another says so here and nowhere else: there is no case-level sentence or plea, because a single value could disagree with this list.","items":{"$ref":"#/components/schemas/CriminalCharge"},"type":"array"},"citation_number":{"description":"The citation number, on traffic matters.","nullable":true,"type":"string"},"court_county":{"description":"County of the court that heard the case.","nullable":true,"type":"string"},"court_raw":{"description":"The court that heard the case, as the source named it.","nullable":true,"type":"string"},"crime_date":{"description":"Date the offence was committed.","format":"date","nullable":true,"type":"string"},"disposition_date":{"description":"Date the case was disposed of.","format":"date","nullable":true,"type":"string"},"disposition_raw":{"description":"How the case as a whole ended, in the court's own words. Each count carries its own outcome under `charges`, and they can differ.","nullable":true,"type":"string"},"docket_entries":{"description":"The proceedings timeline, where the source reports one.","items":{"$ref":"#/components/schemas/DocketEntry"},"type":"array"},"docket_number":{"description":"A second number some courts assign; null where the court assigns none.","nullable":true,"type":"string"},"filed_date":{"description":"Date the case was filed with the court.","format":"date","nullable":true,"type":"string"},"general_category":{"description":"A broader grouping the source states, such as TRAFFIC OFFENSE or BAD CHECKS.","nullable":true,"type":"string"},"grade":{"description":"How serious the case is, graded by Heron from what the source stated. Null where only the courts vendor reported the case, because a docket states no offence to grade.","enum":["felony","misdemeanor","petty_misdemeanor","infraction","unknown",null],"nullable":true},"is_dismissed":{"description":"True when the case ended without a conviction on any count; null where no source stated an outcome, which is not the same as a case still open.","nullable":true,"type":"boolean"},"is_felony":{"description":"True when Heron graded any count of the case a felony; null where nothing graded it.","nullable":true,"type":"boolean"},"is_felony_charge":{"description":"True when a felony was charged; null when the source states neither way.","nullable":true,"type":"boolean"},"is_felony_conviction":{"description":"True when a felony was convicted. Charged and convicted are separate facts and neither implies the other, so both are kept.","nullable":true,"type":"boolean"},"is_misdemeanor_charge":{"description":"True when a misdemeanor was charged; null when the source states neither way.","nullable":true,"type":"boolean"},"is_misdemeanor_conviction":{"description":"True when a misdemeanor was convicted; null when the source states neither way.","nullable":true,"type":"boolean"},"is_unclassified":{"description":"True when the offence text was not recognised, so `grade` and `categories` say little. Null where there was no offence text to recognise.","nullable":true,"type":"boolean"},"mugshot_record_id":{"description":"The source's reference for a booking photograph, which the mugshot route serves. The reference travels; the image never does.","nullable":true,"type":"string"},"offense_location":{"description":"Where the offence was committed.","nullable":true,"type":"string"},"parole_status":{"description":"Parole standing recorded on the case.","nullable":true,"type":"string"},"probation_end_date":{"description":"Date probation ends.","format":"date","nullable":true,"type":"string"},"probation_violation":{"description":"Any probation violation recorded on the case.","nullable":true,"type":"string"},"projected_release_date":{"description":"Date the subject is due to be released.","format":"date","nullable":true,"type":"string"},"publication_date":{"description":"Date the source published the record.","format":"date","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"risk":{"description":"Risk tier of this record: none, low, medium or high. Null where nothing graded it, which `none` would misreport as graded and found harmless.","enum":["none","low","medium","high",null],"nullable":true},"severity_raw":{"description":"How serious the source graded the case, in its own words.","nullable":true,"type":"string"},"source_document_guid":{"description":"The source's identifier for the document behind this record.","nullable":true,"type":"string"},"source_name":{"description":"Which body's records reported the case, such as DISTRICT COURTS.","nullable":true,"type":"string"},"source_state":{"description":"The state whose records named the case. Written as a two-letter code by the background check and as the court location's full name by the courts vendor.","nullable":true,"type":"string"}},"type":"object"},"ResolvedLawsuit":{"description":"One civil case, with one value for each field, newest filing first.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"additional_fields":{"description":"Fields the source reported that have no named home on the record, kept verbatim so nothing it stated is dropped. Rows naming a person, a place or a phone line are dropped rather than carried, because each of those is a thing the case links to.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"case_category_raw":{"description":"The broad half of the source's own taxonomy, such as CIVIL.","nullable":true,"type":"string"},"case_link":{"description":"A link to the case on the court's own system.","nullable":true,"type":"string"},"case_number_raw":{"description":"The number the court filed the case under, as the source wrote it.","nullable":true,"type":"string"},"case_sub_category_raw":{"description":"The narrow half of it, such as DEBT COLLECTION.","nullable":true,"type":"string"},"case_title":{"description":"How the court captioned the case, such as SMITH JOHN VS ACME HOLDINGS LLC.","nullable":true,"type":"string"},"case_type_raw":{"description":"What kind of case it is, in the source's own words.","nullable":true,"type":"string"},"category":{"description":"What kind of claim it is, classified by Heron: `debt_collection`, `contract`, `eviction`, `employment` and the rest. `other` means the source stated a kind that maps to none of them, and `unknown` that it stated none.","enum":["contract","debt_collection","eviction","small_claims","personal_injury","real_property","tax","employment","family","probate","other","unknown"]},"court_branch":{"description":"Which courthouse of that court heard it, where the source names one.","nullable":true,"type":"string"},"court_county":{"description":"County of the court that heard the case.","nullable":true,"type":"string"},"court_raw":{"description":"The court that heard the case, as the source named it.","nullable":true,"type":"string"},"court_state":{"description":"The state the case was filed in. Written as a two-letter code by the background check and as the court location's full name by the courts vendor.","nullable":true,"type":"string"},"demand_amount":{"description":"What the claim asked for, as a decimal string.","nullable":true,"type":"number"},"disposition_date":{"description":"Date the case was disposed of.","format":"date","nullable":true,"type":"string"},"disposition_raw":{"description":"How the case ended, in the court's own words.","nullable":true,"type":"string"},"division":{"description":"The court's own division, such as CIVIL or PROBATE.","nullable":true,"type":"string"},"docket_entries":{"description":"The proceedings timeline, where the source reports one.","items":{"$ref":"#/components/schemas/DocketEntry"},"type":"array"},"filed_date":{"description":"Date the case was filed with the court.","format":"date","nullable":true,"type":"string"},"filing_office_name":{"description":"The office that holds the filing, where the source names one.","nullable":true,"type":"string"},"is_active":{"description":"True when Heron reads the case as still live.","nullable":true,"type":"boolean"},"is_mca":{"description":"True when the claimant is a merchant cash advance funder Heron recognises.","nullable":true,"type":"boolean"},"judgment_amount":{"description":"What the court awarded, as a decimal string. Two fields rather than one amount and a type, because a case can state both what was asked for and what was granted.","nullable":true,"type":"number"},"nature_of_suit_code":{"description":"The federal courts' controlled nature-of-suit code. Stated by the background check only; the courts vendor writes the same fact as text into `nature_of_suit_raw`.","nullable":true,"type":"string"},"nature_of_suit_raw":{"description":"The nature of suit as the source wrote it, such as CONTRACT: OTHER.","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"risk":{"description":"Risk tier of this record: none, low, medium or high. Null on a case only the courts vendor reports, which Heron grades no tier for.","enum":["none","low","medium","high",null],"nullable":true},"satisfaction_date":{"description":"Date the judgment was satisfied.","format":"date","nullable":true,"type":"string"},"source_document_guid":{"description":"The source's identifier for the document behind this record.","nullable":true,"type":"string"},"source_name":{"description":"Which body's records reported the case, such as CIVIL COURTS.","nullable":true,"type":"string"},"status":{"description":"Where the case stands, classified by Heron: `open`, `closed`, `judgment`, `dismissed` or `unknown`. A dismissal outranks the court's own open/closed field, which routinely still reads open on a dismissed case. `unknown` is the honest answer for every case the courts vendor reports from the federal docket, which states no status at all.","enum":["open","closed","judgment","dismissed","unknown"]},"status_date":{"description":"Date that standing was recorded.","format":"date","nullable":true,"type":"string"},"vendor_case_id":{"description":"The courts vendor's own identifier for the case; null on any other source.","nullable":true,"type":"string"},"venue":{"description":"The venue the source states for the case.","nullable":true,"type":"string"}},"type":"object"},"ResolvedLienJudgment":{"description":"One recorded debt, with one value for each field, newest filing first.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"additional_fields":{"description":"Fields the source reported that have no named home on the record, kept verbatim so nothing it stated is dropped. Where a partial SSN appears it carries the first five digits only; the full SSN is never persisted or surfaced.","items":{"$ref":"#/components/schemas/LabelledValue"},"type":"array"},"amount":{"description":"The debt as a decimal string, counted once: an original and its release state one debt between them, never two. Null when no filing states an amount.","nullable":true,"type":"number"},"amount_band":{"description":"Amount band: none, small under $10,000, medium from $10,000 to $49,999.99, or large at $50,000 or more.","enum":["none","small","medium","large"]},"amount_source_raw":{"description":"Which part of the filing the amount was read from; null when no amount.","nullable":true,"type":"string"},"case_status":{"description":"Where the debt stands once every filing recording it is read together: open, released, vacated or closed. Anything but open means it is no longer outstanding. Null on records where the source does not state a net disposition.","enum":["open","released","vacated","closed",null],"nullable":true},"certificate_number":{"description":"A further number the office issued for the same filing. Present where the office numbers certificates separately, and null otherwise.","nullable":true,"type":"string"},"control_number":{"description":"A county control number; stated only by New York records.","nullable":true,"type":"string"},"court_code":{"description":"The source's own code for the office. Written three different ways depending on which record shape carried the filing, so read `filing_office_name` and `filing_county` instead of comparing two of these.","nullable":true,"type":"string"},"creditor_count":{"description":"How many creditors the filing names. Above one it is a bulk court-index filing bundling unrelated debts, so the creditor named cannot be taken as this subject's.","type":"integer"},"creditor_level_raw":{"description":"Which level of government the creditor is, where the source states one.","nullable":true,"type":"string"},"expiration_date":{"description":"Date the filing lapses, where the recorder states one.","format":"date","nullable":true,"type":"string"},"file_date":{"description":"Date the filing was recorded; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_county":{"description":"County of the recording office.","nullable":true,"type":"string"},"filing_number_raw":{"description":"The number the office recorded the filing under, as the source wrote it.","nullable":true,"type":"string"},"filing_office_name":{"description":"The office that recorded the filing, such as a county recorder or a Secretary of State. A lien is recorded rather than tried, so this is often not a court.","nullable":true,"type":"string"},"filing_relationship":{"description":"How this filing relates to the one it is paired with: `release_of` or `vacate_of` on the filing that ends the debt, `released_by` or `vacated_by` on the original. Null when unpaired.","nullable":true,"type":"string"},"filing_state":{"description":"State of the recording office.","nullable":true,"type":"string"},"hidden_filing_number":{"description":"An internal number the source holds for the filing; null when it states none.","nullable":true,"type":"string"},"irs_serial_number":{"description":"The IRS serial number of a federal tax lien; null on any other filing.","nullable":true,"type":"string"},"is_mca_creditor":{"description":"True when the creditor is a known merchant cash advance funder; null where no filing stated anything to match a funder against.","nullable":true,"type":"boolean"},"is_open_federal_tax_lien":{"description":"True when the filing is a federal tax lien and is still outstanding; null where no filing stated it.","nullable":true,"type":"boolean"},"is_open_judgment":{"description":"True when the filing is a judgment and is still outstanding; null where no filing stated it.","nullable":true,"type":"boolean"},"is_open_state_tax_lien":{"description":"True when the filing is a state tax lien and is still outstanding. Each of these four reads false once the filing is released, so read `type_of_filing_raw` for what it was, and null where no filing stated it, which false would report as a settled question.","nullable":true,"type":"boolean"},"is_open_tax_lien":{"description":"True when the filing is any tax lien and is still outstanding; null where no filing stated it.","nullable":true,"type":"boolean"},"is_released":{"description":"True when the source no longer shows the debt as outstanding. Vacated and closed filings are included, not only released ones. Null where no filing stated a status, which false would misreport as still outstanding.","nullable":true,"type":"boolean"},"kind_of_claim":{"description":"What the filing is at heart: `lien`, `judgment`, `release` where the filing ends an earlier one, or `unknown`. A tax warrant reads as a lien, because it is a state's way of recording one.","enum":["lien","judgment","release","unknown"]},"original_filing_number":{"description":"The filing this one amends or releases, as the source wrote it. Usually null on a filing that has been released, because the pairing is stated on `related_filing_number` instead.","nullable":true,"type":"string"},"perfected_date":{"description":"Date the lien was perfected, where the recorder states one.","format":"date","nullable":true,"type":"string"},"record_shape":{"description":"Which of the source's record shapes carried this filing.","nullable":true,"type":"string"},"related_filing_number":{"description":"The filing this one is paired with, whether it releases this one or is released by it. Null when the filing stands alone.","nullable":true,"type":"string"},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"release_date":{"description":"Date the lien was released; null when unreleased.","format":"date","nullable":true,"type":"string"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"},"risk":{"description":"Risk tier of this record: none, low, medium or high. Null where nothing graded it, which `none` would misreport as graded and found harmless.","enum":["none","low","medium","high",null],"nullable":true},"satisfaction_date":{"description":"Date the debt was satisfied as recorded; null when unavailable.","format":"date","nullable":true,"type":"string"},"source_document_guid":{"description":"The source's own identifier for the document behind this record, so a reader can quote it back to the source. Null when the source states none.","nullable":true,"type":"string"},"status":{"description":"The standing the recorder wrote on the filing itself: open, released, satisfied, vacated, void, terminated, withdrawn or unknown. It cannot see a later filing that ends the debt, so `open` here is not a claim that the debt is still outstanding; `case_status` is.","enum":["open","released","satisfied","vacated","void","terminated","withdrawn","unknown"]},"status_date":{"description":"Date that standing was recorded; null when unavailable.","format":"date","nullable":true,"type":"string"},"type_of_action_raw":{"description":"The action the filing records, in the recorder's words.","nullable":true,"type":"string"},"type_of_filing_raw":{"description":"What was filed, in the recorder's words, such as JUDGMENT LIEN or FEDERAL TAX LIEN.","nullable":true,"type":"string"},"type_of_satisfaction_raw":{"description":"How the debt was satisfied, in the recorder's words.","nullable":true,"type":"string"},"type_of_tax_raw":{"description":"Which tax a tax lien secures, in the recorder's words.","nullable":true,"type":"string"},"vacate_date":{"description":"Date a judgment was vacated; null when it was not.","format":"date","nullable":true,"type":"string"}},"type":"object"},"ResolvedOwner":{"description":"An owner an application form declared, best attested first: an owner a report also found leads one only a form named, then the largest stated share. Only an application form declares an owner, so a person a report returned under an owner's search is not one.\n\nWhere the sources spelled the name differently, `name` is the spelling to show: the deal's own leads when it stated one. The other spellings are not in this response.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"aliases":{"description":"Every other spelling a source stated for this person, in precedence order. `name` is the one to show; these are the ones it was chosen over. Empty when the sources agreed.","items":{"$ref":"#/components/schemas/PersonName"},"type":"array"},"country_of_residence":{"description":"Country of residence. No source read today states one, so null.","nullable":true,"type":"string"},"credit_scores":{"description":"One score per `score_model`, in the order `fico`, `vantagescore`, `unknown`: the score whose newest statement came last, from any source. An edit counts as a new statement. Older scores of the same model, and a model no source scored, are absent.","items":{"$ref":"#/components/schemas/ResolvedCreditScore"},"type":"array"},"date_of_birth":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"Read as parts, because a source can state a year and a month with no day. Null unless a source stated one. Only the application does today, so in practice only a person the deal applied with carries one.","nullable":true},"deceased_on":{"description":"Date of death where a source states one; null under the same limit as above.","format":"date","nullable":true,"type":"string"},"emails":{"description":"Every email address every source stated.","items":{"$ref":"#/components/schemas/SourcedEmail"},"type":"array"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"home_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where they live; null when no source placed them.","nullable":true},"home_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A number a source called a home number; null when none did.","nullable":true},"is_deceased":{"description":"Whether a source records this person as deceased. Null until the parser surfaces the subject's own profile; it reads the indicator for an associate only.","nullable":true,"type":"boolean"},"mobile_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"The line a reviewer would ring: every number a source did not call a home number, including one stated with no kind at all. Null when no source reported one.","nullable":true},"name":{"allOf":[{"$ref":"#/components/schemas/PersonName"}],"description":"The one name to show, broken into its parts. Null when no source stated one.","nullable":true},"national_ids":{"description":"Every identifier every source stated.","items":{"$ref":"#/components/schemas/SourcedNationalId"},"type":"array"},"nationalities":{"description":"Every nationality a source stated.","items":{"$ref":"#/components/schemas/SourcedNationality"},"type":"array"},"other_addresses":{"description":"Every other place a source put this party, which the named address fields chose one of. No span is stated, so this is where a subject has been read, not when. Empty when every place a source stated is already named above.","items":{"$ref":"#/components/schemas/ResolvedAddress"},"type":"array"},"ownership_percentage":{"description":"The share the form stated, out of 100. Null when it stated none.","nullable":true,"type":"number"},"slot":{"description":"The owner position on the application form: `owner_1` or `owner_2`. Null when no form stated one. One person can be owner 1 on one form and owner 2 on another.","nullable":true,"type":"string"},"subject_type":{"description":"Which of the submission's own subjects this row is, so you can tell them apart from everything the searches turned up around them. Set differently for the two, because only one of them is certain.\n\n`business`: the company being underwritten. A deal has one, and every source is searched for it, so a company row carries this even when no application form named one and however differently a registry or a directory spells the name.\n\n`owner`: a person the submission declared as an owner, which only an application form states. A person a report returned is null even when that report searched under an owner, because a relative or a namesake found by that search is a finding and not a declared owner. Several rows can hold `owner`, since a submission names any number of them, and the order the owners are returned in answers which one leads.\n\nNull: every other row. For people that is the usual case, covering relatives, court parties and officers of other companies. For a company it means one reached through a finding, such as another company an owner holds an office in.","enum":["owner","business",null],"nullable":true}},"type":"object"},"ResolvedParty":{"description":"One person or company a link reaches. A party the sources named and said nothing else about states its name and where that name came from, and nothing more, which is how a filing's officers and agents and a lien's creditors arrive.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"billing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company is billed.","nullable":true},"business_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company is.","nullable":true},"business_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A company's line.","nullable":true},"country_of_residence":{"description":"Country of residence. No source read today states one, so null.","nullable":true,"type":"string"},"date_of_birth":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"Read as parts, because a source can state a year and a month with no day. Null unless a source stated one. Only the application does today, so in practice only a person the deal applied with carries one.","nullable":true},"deceased_on":{"description":"Date of death where a source states one; null under the same limit as above.","format":"date","nullable":true,"type":"string"},"emails":{"description":"Every email address every source stated.","items":{"$ref":"#/components/schemas/SourcedEmail"},"type":"array"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"home_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a person lives.","nullable":true},"home_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A person's home line.","nullable":true},"identifiers":{"description":"Every identifier every source stated, each with the authority's answer on it.","items":{"$ref":"#/components/schemas/SourcedCompanyId"},"type":"array"},"is_deceased":{"description":"Whether a source records this person as deceased. Null until the parser surfaces the subject's own profile; it reads the indicator for an associate only.","nullable":true,"type":"boolean"},"is_dissolved":{"description":"True when no linked filing that states a standing is still active. When no linked filing states one, the highest-precedence source's company-level standing answers instead. A company can be revoked in one state and active in the state that formed it, so one dissolved filing does not dissolve the company. Null when no source states a standing, which is not good standing.","nullable":true,"type":"boolean"},"mailing_address":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"Where a company's post goes.","nullable":true},"mobile_phone":{"allOf":[{"$ref":"#/components/schemas/ResolvedPhone"}],"description":"A person's mobile line.","nullable":true},"name":{"description":"The one spelling to show for this party.","nullable":true,"type":"string"},"national_ids":{"description":"Every identifier every source stated.","items":{"$ref":"#/components/schemas/SourcedNationalId"},"type":"array"},"nationalities":{"description":"Every nationality a source stated.","items":{"$ref":"#/components/schemas/SourcedNationality"},"type":"array"},"registered_office":{"allOf":[{"$ref":"#/components/schemas/ResolvedAddress"}],"description":"A company's address on the state register.","nullable":true},"started_on":{"allOf":[{"$ref":"#/components/schemas/PartialDate"}],"description":"When the company started trading, read as parts because a source can state a year alone. Not the date it was formed: a business often trades for years before the entity that applies is registered, and the formation date is `formed_on` on its corporate filing.","nullable":true},"state_of_incorporation":{"description":"The state or territory where the company was incorporated. Recognised US state names and codes use one uppercase state name; null when no source states one.","nullable":true,"type":"string"},"subject_type":{"description":"Which of the submission's own subjects this row is, so you can tell them apart from everything the searches turned up around them. Set differently for the two, because only one of them is certain.\n\n`business`: the company being underwritten. A deal has one, and every source is searched for it, so a company row carries this even when no application form named one and however differently a registry or a directory spells the name.\n\n`owner`: a person the submission declared as an owner, which only an application form states. A person a report returned is null even when that report searched under an owner, because a relative or a namesake found by that search is a finding and not a declared owner. Several rows can hold `owner`, since a submission names any number of them, and the order the owners are returned in answers which one leads.\n\nNull: every other row. For people that is the usual case, covering relatives, court parties and officers of other companies. For a company it means one reached through a finding, such as another company an owner holds an office in.","enum":["owner","business",null],"nullable":true},"type_of_entity":{"description":"The company's legal form: llc, inc, corp, lp, llp, partnership, sole_proprietor, ltd, plc or unknown. The deal's own word for it leads, as it does for the names, so an application form stating one outranks a registry; `reported_by` names what every source said, and each corporate filing states its own `legal_form`. `unknown` when no source states one.","enum":["llc","inc","corp","lp","llp","partnership","sole_proprietor","ltd","plc","co","pc","pllc","unknown"]},"websites":{"description":"Every website every source stated.","items":{"$ref":"#/components/schemas/SourcedWebsite"},"type":"array"}},"type":"object"},"ResolvedPhone":{"description":"One line, with the source of each of its own fields. Which line it is, the field name says.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"country_code":{"description":"Dialling code without the plus. `1` for every source read today, all of which are American. Null when the source stated nothing readable as a number.","nullable":true,"type":"string"},"heron_id":{"description":"The Heron ID of this entity. Send it in `PATCH /end_users/{id}/details` to update the entity.","nullable":true,"type":"string"},"is_valid":{"description":"False when the digits form no number the plan allows. Such a line resolves against nothing, so a number read against the wrong country never joins a real one.","type":"boolean"},"line_type":{"description":"What kind of line the numbering plan says this is, such as `mobile` or `fixed_line`. A fact about the number, unlike the relationship's type, which is one party's use of it.","enum":["fixed_line","mobile","fixed_line_or_mobile","toll_free","premium_rate","shared_cost","voip","personal_number","pager","universal_access_number","voicemail","unknown"]},"national_destination_code":{"description":"The area code a caller dials to reach this number's area. Its length is set by each country's numbering plan, so it is read from that plan rather than from the digits. Null when the plan does not recognise the number.","nullable":true,"type":"string"},"normalized":{"description":"The one canonical form of this number, its E.164 form, as `+17635550143`. Two records are the same line when this matches, so unlike an address nothing is scored. Never includes an extension: E.164 addresses the switchboard, and the extension is on the relationship. Null when the source stated nothing readable as a number.","nullable":true,"type":"string"},"raw":{"description":"The number exactly as the source wrote it.","type":"string"},"subscriber_number":{"description":"The line itself, after the country code and the area code.","nullable":true,"type":"string"}},"type":"object"},"ResolvedRelationship":{"description":"One thing standing in a named capacity to another, with the party on the other end stated inside it: a debtor on a lien, an officer on a filing, the company a filing registers.","properties":{"entity":{"allOf":[{"$ref":"#/components/schemas/ResolvedParty"}],"description":"The party on the other end of the link, in full. It has no `relationships` of its own, because each link already shows from both ends."},"filed_as":{"description":"On a `filed` link, the company name as the registry wrote it on this filing. The party on the other end may lead with another of its names, so this is where to read what was registered. Null on any other capacity.","nullable":true,"type":"string"},"first_reported":{"description":"Earliest date a source placed this party here; null unless the relationship is to an address and a source stated one.","format":"date","nullable":true,"type":"string"},"last_reported":{"description":"Latest date a source placed this party here; null when none was stated.","format":"date","nullable":true,"type":"string"},"match_confidence":{"description":"Heron's confidence that the party this record names is the deal's subject: `high`, `medium` or `low`, scored from how well the names agree. Null unless the link is from a party to a `court` record.","nullable":true,"type":"string"},"owed_amount":{"description":"What this record says this party owes on it, as a decimal string. A lien can name many debtors and give each their own share, so this is that party's share and not the total on the record. Null on any other capacity, and on a debtor the record gave no share.","nullable":true,"type":"number"},"ownership_percentage":{"description":"The share the application states for an owner; null on other relationships.","nullable":true,"type":"number"},"reported_date":{"description":"Date the relationship was recorded on the record.","format":"date","nullable":true,"type":"string"},"slot":{"description":"The owner box the application form wrote this owner in, `owner_1` or `owner_2`. One person can sit in different boxes on different forms, so it describes this relationship rather than the person. Null on any other capacity.","nullable":true,"type":"string"},"title":{"description":"The office an officer holds, in the registry's own words, such as President or Managing Member. Null on any other capacity, and on an officer the registry gave no office.","nullable":true,"type":"string"},"type":{"description":"The capacity, such as `debtor`, `trustee` or `officer`. Always lower case with words joined by underscores, whoever stated it. `registered_agent` accepts legal papers for the company. `filed` joins a company to a filing it made. A link to an address says what the place is used for: `physical`, `mailing`, `home`, `billing`, `previous`, `registered_office`, `service_of_process` where a registered agent accepts service, or `filing_office` where a record was recorded. `has_address` when a source states a place for a party and no use for it. Null when a source names the party but not the capacity.","nullable":true,"type":"string"}},"type":"object"},"ResolvedTaxIdVerification":{"description":"One check of one identifier against one name, and the authority's answer.","properties":{"_sources":{"additionalProperties":{"type":"string"},"description":"Which source each single-valued field was taken from, keyed by the field name. A field several sources stated names only the source whose value is shown, and a field no source stated is absent. A list field is not here: it unions what every source stated, so each of its values names its own source. An address or a phone is not here either, because each has its own `_sources`.","type":"object"},"checked_on":{"description":"When the check was made; null when the source states no date.","format":"date","nullable":true,"type":"string"},"identifier":{"allOf":[{"$ref":"#/components/schemas/CompanyId"}],"description":"The identifier that was checked, as it was sent. Its own `verified` is always null here."},"name_checked":{"description":"The business name the identifier was checked under, as sent.","type":"string"},"outcome":{"description":"`matched` when the authority confirms the identifier belongs to a business of that name, `not_matched` when it does not. A call that returned an error is not a row.","enum":["matched","not_matched"]},"relationships":{"description":"Everyone and everything this record names, and in what capacity.","items":{"$ref":"#/components/schemas/ResolvedRelationship"},"type":"array"},"reported_by":{"description":"Every source that reported this record, so a reader can tell one two sources found from one only a single search returned.","items":{"type":"string"},"type":"array"}},"type":"object"},"RestrictedIndustry":{"properties":{"description":{"type":"string"},"name":{"type":"string"}},"type":"object"},"Rule":{"properties":{"condition":{"description":"Key for how to compare metric value to rule value","enum":["equal","not_equal","greater_than","greater_than_or_equal","less_than","less_than_or_equal","contains"],"example":"equal","type":"string"},"created":{"description":"When the rule was created in Heron system","example":"2026-08-25T22:12:44.269320","format":"date-time","readOnly":true,"type":"string"},"date_range":{"description":"Date range corresponding to metric","enum":["latest","last_30_days","last_90_days","last_120_days","last_180_days","last_365_days","next_30_days","next_60_days","next_90_days","next_180_days","last_1_calendar_months","last_3_calendar_months","last_4_calendar_months","last_6_calendar_months","last_12_calendar_months","last_15_calendar_months","last_24_calendar_months","last_1_full_calendar_months","last_2_full_calendar_months","last_3_full_calendar_months","last_6_full_calendar_months","last_12_full_calendar_months","last_60_days","last_45_days","last_2_calendar_months"],"example":"last_180_days","type":"string"},"group":{"description":"Used to display rules by the stage in the underwriting workflow to which they apply.","enum":["data_quality_datasource","data_quality_account","data_quality_transaction",null],"example":"data_quality_datasource","nullable":true,"type":"string"},"heron_id":{"description":"Unique id for rule generated by Heron","example":"rul_kGiyKBrAMoNLSnaSUA2Ccc","readOnly":true,"type":"string"},"last_updated":{"description":"When the rule was last updated in Heron system","example":"2026-10-06T22:12:44.269354","format":"date-time","readOnly":true,"type":"string"},"metric_label":{"description":"Label corresponding to metric","enum":["data_volume","date_range","date_range_with_data_sources","data_freshness","has_balance_ratio","data_coverage","accounts","potentially_duplicated_account_pairs","category_coverage","inflows","outflows","deposit_days","net_amount","inflow_monthly_avg_amount","inflow_amount","inflow_growth_rate","merchant_coverage","confidence","revenue_anomalies","last_debt_investment","last_debt_investment_days","merchant_heron_ids","distinct_mcas","distinct_mcas_from_outflows","distinct_mcas_from_inflows","latest_largest_mca_funding_amount","min_revenue_count_per_statement_ignoring_savings_and_loc_accounts","max_negative_balance_days_per_statement","min_total_revenue_per_statement","max_low_balance_days_per_statement","min_average_daily_balance_per_statement","has_unreconciled_data","revenue_daily_average","cogs_daily_average","opex_daily_average","debt_repayment_daily_average","debt_investment","debt_investors","nsf_fees","nsf_days","inflow_daily_average","average_monthly_revenue_sources","debt_investment_count","debt_collection","tax_payments","tax_payment_amount","unconnected_account_ratio","outflow_daily_average","revenue_sources","atm_withdrawals","revenue","annualized_revenue","cogs","average_credit_card_spend","opex","revenue_profit_and_loss","annualized_revenue_profit_and_loss","cogs_profit_and_loss","opex_profit_and_loss","revenue_monthly_average","number_months_revenue_less_monthly_target","min_number_of_revenue_deposits","debt_repayment","revenue_growth_rate","category_debt_repayment_count","category_other_expenses_count","category_revenue_count","category_postage_count","category_debt_investment_count","category_atm_cash_outflows_count","category_rent_count","insurance_in_out_ratio","rent_in_out_ratio","taxes_in_out_ratio","travel_in_out_ratio","company_investments_in_out_ratio","atm_cash_outflows_in_out_ratio","overdraft_nsf_fees_in_out_ratio","reconciled_intra_company_transfers_to_insurance_ratio","insurance_to_general_payment_ratio","insurance_to_advertising_ratio","insurance_to_credit_card_ratio","insurance_to_check_deposits_ratio","insurance_to_atm_cash_inflows_ratio","insurance_to_debt_repayment_ratio","insurance_to_charges_fees_ratio","insurance_to_travel_ratio","insurance_to_inventory_ratio","insurance_to_none_ratio","equity_investment_to_advertising_ratio","equity_investment_to_debt_repayment_ratio","equity_investment_to_charges_fees_ratio","equity_investment_to_unreconciled_intra_company_transfers_ratio","equity_investment_to_travel_ratio","equity_investment_to_company_investments_ratio","general_payment_to_credit_card_ratio","general_payment_to_p2p_transfers_ratio","general_payment_to_company_investments_ratio","general_payment_to_none_ratio","debt_investment_to_overdraft_nsf_fees_ratio","debt_investment_to_other_expenses_ratio","debt_investment_to_none_ratio","advertising_to_p2p_transfers_ratio","advertising_to_other_expenses_ratio","credit_card_to_check_deposits_ratio","credit_card_to_charges_fees_ratio","credit_card_to_travel_ratio","credit_card_to_inventory_ratio","credit_card_to_revenue_ratio","credit_card_to_payroll_and_consultants_ratio","credit_card_to_none_ratio","rent_to_check_deposits_ratio","rent_to_postage_ratio","rent_to_special_outflows_ratio","rent_to_travel_ratio","rent_to_p2p_transfers_ratio","rent_to_payroll_and_consultants_ratio","check_deposits_to_debt_repayment_ratio","check_deposits_to_postage_ratio","check_deposits_to_unreconciled_intra_company_transfers_ratio","check_deposits_to_revenue_ratio","special_inflows_to_charges_fees_ratio","special_inflows_to_utilities_ratio","special_inflows_to_unreconciled_intra_company_transfers_ratio","special_inflows_to_travel_ratio","special_inflows_to_revenue_ratio","special_inflows_to_atm_cash_outflows_ratio","special_inflows_to_payroll_and_consultants_ratio","refunds_to_atm_cash_inflows_ratio","refunds_to_charges_fees_ratio","refunds_to_utilities_ratio","refunds_to_unreconciled_intra_company_transfers_ratio","refunds_to_travel_ratio","refunds_to_overdraft_nsf_fees_ratio","refunds_to_atm_cash_outflows_ratio","atm_cash_inflows_to_charges_fees_ratio","atm_cash_inflows_to_utilities_ratio","atm_cash_inflows_to_unreconciled_intra_company_transfers_ratio","atm_cash_inflows_to_atm_cash_outflows_ratio","atm_cash_inflows_to_other_expenses_ratio","debt_repayment_to_taxes_ratio","debt_repayment_to_postage_ratio","debt_repayment_to_special_outflows_ratio","debt_repayment_to_atm_cash_outflows_ratio","debt_repayment_to_payroll_and_consultants_ratio","check_outflows_to_charges_fees_ratio","check_outflows_to_utilities_ratio","check_outflows_to_travel_ratio","check_outflows_to_p2p_transfers_ratio","check_outflows_to_revenue_ratio","check_outflows_to_other_expenses_ratio","check_outflows_to_payroll_and_consultants_ratio","taxes_to_travel_ratio","taxes_to_p2p_transfers_ratio","taxes_to_revenue_ratio","taxes_to_atm_cash_outflows_ratio","taxes_to_other_expenses_ratio","taxes_to_payroll_and_consultants_ratio","charges_fees_to_postage_ratio","charges_fees_to_overdraft_nsf_fees_ratio","charges_fees_to_revenue_ratio","charges_fees_to_company_investments_ratio","charges_fees_to_other_expenses_ratio","charges_fees_to_none_ratio","utilities_to_postage_ratio","utilities_to_special_outflows_ratio","utilities_to_travel_ratio","utilities_to_overdraft_nsf_fees_ratio","utilities_to_other_expenses_ratio","postage_to_unreconciled_intra_company_transfers_ratio","postage_to_p2p_transfers_ratio","postage_to_none_ratio","unreconciled_intra_company_transfers_to_travel_ratio","unreconciled_intra_company_transfers_to_p2p_transfers_ratio","unreconciled_intra_company_transfers_to_atm_cash_outflows_ratio","unreconciled_intra_company_transfers_to_other_expenses_ratio","special_outflows_to_p2p_transfers_ratio","special_outflows_to_atm_cash_outflows_ratio","travel_to_p2p_transfers_ratio","travel_to_inventory_ratio","travel_to_other_expenses_ratio","travel_to_payroll_and_consultants_ratio","travel_to_none_ratio","p2p_transfers_to_overdraft_nsf_fees_ratio","p2p_transfers_to_atm_cash_outflows_ratio","inventory_to_overdraft_nsf_fees_ratio","inventory_to_company_investments_ratio","inventory_to_atm_cash_outflows_ratio","inventory_to_other_expenses_ratio","overdraft_nsf_fees_to_other_expenses_ratio","revenue_to_payroll_and_consultants_ratio","latest_balance","balance_minimum","balance_maximum","balance_average","change_in_balance","negative_balance_days","negative_balance_days_by_account","mean_balance_velocity","mean_abs_balance_velocity","weekday_balance_average","weekday_with_highest_avg","weekday_with_lowest_avg","gross_operating_cashflow_daily_average","net_operating_cashflow_daily_average","gross_operating_cashflow","net_operating_cashflow","gross_operating_cashflow_profit_and_loss","net_operating_cashflow_profit_and_loss","net_operating_cashflow_monthly_average","debt_service_coverage_ratio","predicted_nsf_fees","predicted_balance_daily_average","heron_score"],"example":"unique_transactions","type":"string"},"name":{"description":"Description of rule. Sent with webhook response, so can be used as a reference to the rule","example":"notify_if_debt_investment_count_gt_0_last_180d","maxLength":140,"nullable":true,"type":"string"},"selector":{"additionalProperties":{},"description":"key-value pairs of the desired selector that should select whichend users to apply this rule. They are evaluated as an AND condition(all must be true to run this rule for an end user). Leave empty toapply to all end users.","example":{"is_portfolio":true},"type":"object"},"value":{"description":"Numeric value to compare to a metric; use this when the threshold is numeric","example":42.42,"nullable":true,"type":"number"},"value_str":{"description":"String value to compare to a metric; use this when the threshold is a string","example":"mrc_12345678ijwdd321d921","nullable":true,"type":"string"}},"type":"object"},"RuleEvaluationSchema":{"properties":{"metric":{"$ref":"#/components/schemas/Metric"},"result":{"enum":["PASS","FAIL","NOT_AVAILABLE"],"type":"string"},"rule":{"$ref":"#/components/schemas/Rule"}},"type":"object"},"RuleUpdateSchema":{"properties":{"condition":{"description":"Key for how to compare metric value to rule value","enum":["equal","not_equal","greater_than","greater_than_or_equal","less_than","less_than_or_equal","contains"],"example":"equal","type":"string"},"created":{"description":"When the rule was created in Heron system","example":"2026-08-25T22:12:44.269320","format":"date-time","readOnly":true,"type":"string"},"date_range":{"description":"Date range corresponding to metric","enum":["latest","last_30_days","last_90_days","last_120_days","last_180_days","last_365_days","next_30_days","next_60_days","next_90_days","next_180_days","last_1_calendar_months","last_3_calendar_months","last_4_calendar_months","last_6_calendar_months","last_12_calendar_months","last_15_calendar_months","last_24_calendar_months","last_1_full_calendar_months","last_2_full_calendar_months","last_3_full_calendar_months","last_6_full_calendar_months","last_12_full_calendar_months","last_60_days","last_45_days","last_2_calendar_months"],"example":"last_180_days","type":"string"},"group":{"description":"Used to display rules by the stage in the underwriting workflow to which they apply.","enum":["data_quality_datasource","data_quality_account","data_quality_transaction",null],"example":"data_quality_datasource","nullable":true,"type":"string"},"heron_id":{"description":"Unique id for rule generated by Heron","example":"rul_kGiyKBrAMoNLSnaSUA2Ccc","readOnly":true,"type":"string"},"last_updated":{"description":"When the rule was last updated in Heron system","example":"2026-10-06T22:12:44.269354","format":"date-time","readOnly":true,"type":"string"},"metric_label":{"description":"Label corresponding to metric","enum":["data_volume","date_range","date_range_with_data_sources","data_freshness","has_balance_ratio","data_coverage","accounts","potentially_duplicated_account_pairs","category_coverage","inflows","outflows","deposit_days","net_amount","inflow_monthly_avg_amount","inflow_amount","inflow_growth_rate","merchant_coverage","confidence","revenue_anomalies","last_debt_investment","last_debt_investment_days","merchant_heron_ids","distinct_mcas","distinct_mcas_from_outflows","distinct_mcas_from_inflows","latest_largest_mca_funding_amount","min_revenue_count_per_statement_ignoring_savings_and_loc_accounts","max_negative_balance_days_per_statement","min_total_revenue_per_statement","max_low_balance_days_per_statement","min_average_daily_balance_per_statement","has_unreconciled_data","revenue_daily_average","cogs_daily_average","opex_daily_average","debt_repayment_daily_average","debt_investment","debt_investors","nsf_fees","nsf_days","inflow_daily_average","average_monthly_revenue_sources","debt_investment_count","debt_collection","tax_payments","tax_payment_amount","unconnected_account_ratio","outflow_daily_average","revenue_sources","atm_withdrawals","revenue","annualized_revenue","cogs","average_credit_card_spend","opex","revenue_profit_and_loss","annualized_revenue_profit_and_loss","cogs_profit_and_loss","opex_profit_and_loss","revenue_monthly_average","number_months_revenue_less_monthly_target","min_number_of_revenue_deposits","debt_repayment","revenue_growth_rate","category_debt_repayment_count","category_other_expenses_count","category_revenue_count","category_postage_count","category_debt_investment_count","category_atm_cash_outflows_count","category_rent_count","insurance_in_out_ratio","rent_in_out_ratio","taxes_in_out_ratio","travel_in_out_ratio","company_investments_in_out_ratio","atm_cash_outflows_in_out_ratio","overdraft_nsf_fees_in_out_ratio","reconciled_intra_company_transfers_to_insurance_ratio","insurance_to_general_payment_ratio","insurance_to_advertising_ratio","insurance_to_credit_card_ratio","insurance_to_check_deposits_ratio","insurance_to_atm_cash_inflows_ratio","insurance_to_debt_repayment_ratio","insurance_to_charges_fees_ratio","insurance_to_travel_ratio","insurance_to_inventory_ratio","insurance_to_none_ratio","equity_investment_to_advertising_ratio","equity_investment_to_debt_repayment_ratio","equity_investment_to_charges_fees_ratio","equity_investment_to_unreconciled_intra_company_transfers_ratio","equity_investment_to_travel_ratio","equity_investment_to_company_investments_ratio","general_payment_to_credit_card_ratio","general_payment_to_p2p_transfers_ratio","general_payment_to_company_investments_ratio","general_payment_to_none_ratio","debt_investment_to_overdraft_nsf_fees_ratio","debt_investment_to_other_expenses_ratio","debt_investment_to_none_ratio","advertising_to_p2p_transfers_ratio","advertising_to_other_expenses_ratio","credit_card_to_check_deposits_ratio","credit_card_to_charges_fees_ratio","credit_card_to_travel_ratio","credit_card_to_inventory_ratio","credit_card_to_revenue_ratio","credit_card_to_payroll_and_consultants_ratio","credit_card_to_none_ratio","rent_to_check_deposits_ratio","rent_to_postage_ratio","rent_to_special_outflows_ratio","rent_to_travel_ratio","rent_to_p2p_transfers_ratio","rent_to_payroll_and_consultants_ratio","check_deposits_to_debt_repayment_ratio","check_deposits_to_postage_ratio","check_deposits_to_unreconciled_intra_company_transfers_ratio","check_deposits_to_revenue_ratio","special_inflows_to_charges_fees_ratio","special_inflows_to_utilities_ratio","special_inflows_to_unreconciled_intra_company_transfers_ratio","special_inflows_to_travel_ratio","special_inflows_to_revenue_ratio","special_inflows_to_atm_cash_outflows_ratio","special_inflows_to_payroll_and_consultants_ratio","refunds_to_atm_cash_inflows_ratio","refunds_to_charges_fees_ratio","refunds_to_utilities_ratio","refunds_to_unreconciled_intra_company_transfers_ratio","refunds_to_travel_ratio","refunds_to_overdraft_nsf_fees_ratio","refunds_to_atm_cash_outflows_ratio","atm_cash_inflows_to_charges_fees_ratio","atm_cash_inflows_to_utilities_ratio","atm_cash_inflows_to_unreconciled_intra_company_transfers_ratio","atm_cash_inflows_to_atm_cash_outflows_ratio","atm_cash_inflows_to_other_expenses_ratio","debt_repayment_to_taxes_ratio","debt_repayment_to_postage_ratio","debt_repayment_to_special_outflows_ratio","debt_repayment_to_atm_cash_outflows_ratio","debt_repayment_to_payroll_and_consultants_ratio","check_outflows_to_charges_fees_ratio","check_outflows_to_utilities_ratio","check_outflows_to_travel_ratio","check_outflows_to_p2p_transfers_ratio","check_outflows_to_revenue_ratio","check_outflows_to_other_expenses_ratio","check_outflows_to_payroll_and_consultants_ratio","taxes_to_travel_ratio","taxes_to_p2p_transfers_ratio","taxes_to_revenue_ratio","taxes_to_atm_cash_outflows_ratio","taxes_to_other_expenses_ratio","taxes_to_payroll_and_consultants_ratio","charges_fees_to_postage_ratio","charges_fees_to_overdraft_nsf_fees_ratio","charges_fees_to_revenue_ratio","charges_fees_to_company_investments_ratio","charges_fees_to_other_expenses_ratio","charges_fees_to_none_ratio","utilities_to_postage_ratio","utilities_to_special_outflows_ratio","utilities_to_travel_ratio","utilities_to_overdraft_nsf_fees_ratio","utilities_to_other_expenses_ratio","postage_to_unreconciled_intra_company_transfers_ratio","postage_to_p2p_transfers_ratio","postage_to_none_ratio","unreconciled_intra_company_transfers_to_travel_ratio","unreconciled_intra_company_transfers_to_p2p_transfers_ratio","unreconciled_intra_company_transfers_to_atm_cash_outflows_ratio","unreconciled_intra_company_transfers_to_other_expenses_ratio","special_outflows_to_p2p_transfers_ratio","special_outflows_to_atm_cash_outflows_ratio","travel_to_p2p_transfers_ratio","travel_to_inventory_ratio","travel_to_other_expenses_ratio","travel_to_payroll_and_consultants_ratio","travel_to_none_ratio","p2p_transfers_to_overdraft_nsf_fees_ratio","p2p_transfers_to_atm_cash_outflows_ratio","inventory_to_overdraft_nsf_fees_ratio","inventory_to_company_investments_ratio","inventory_to_atm_cash_outflows_ratio","inventory_to_other_expenses_ratio","overdraft_nsf_fees_to_other_expenses_ratio","revenue_to_payroll_and_consultants_ratio","latest_balance","balance_minimum","balance_maximum","balance_average","change_in_balance","negative_balance_days","negative_balance_days_by_account","mean_balance_velocity","mean_abs_balance_velocity","weekday_balance_average","weekday_with_highest_avg","weekday_with_lowest_avg","gross_operating_cashflow_daily_average","net_operating_cashflow_daily_average","gross_operating_cashflow","net_operating_cashflow","gross_operating_cashflow_profit_and_loss","net_operating_cashflow_profit_and_loss","net_operating_cashflow_monthly_average","debt_service_coverage_ratio","predicted_nsf_fees","predicted_balance_daily_average","heron_score"],"example":"unique_transactions","type":"string"},"name":{"description":"Description of rule. Sent with webhook response, so can be used as a reference to the rule","example":"notify_if_debt_investment_count_gt_0_last_180d","maxLength":140,"nullable":true,"type":"string"},"selector":{"additionalProperties":{},"description":"key-value pairs of the desired selector that should select whichend users to apply this rule. They are evaluated as an AND condition(all must be true to run this rule for an end user). Leave empty toapply to all end users.","example":{"is_portfolio":true},"type":"object"},"value":{"description":"Numeric value to compare to a metric; use this when the threshold is numeric","example":42.42,"nullable":true,"type":"number"},"value_str":{"description":"String value to compare to a metric; use this when the threshold is a string","example":"mrc_12345678ijwdd321d921","nullable":true,"type":"string"}},"type":"object"},"RuleViolation":{"properties":{"metric":{"$ref":"#/components/schemas/Metric"},"rule":{"$ref":"#/components/schemas/Rule"}},"type":"object"},"SQLCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"column_name":{"type":"string"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"query_name":{"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true}},"required":["column_name","query_name"],"type":"object"},"SalesforceObjectJsonSchema":{"properties":{"applicant_addresses":{"items":{"additionalProperties":{},"type":"object"},"nullable":true,"type":"array"},"policy_number":{"nullable":true,"type":"string"},"property":{"additionalProperties":{},"nullable":true,"type":"object"},"property_addresses":{"items":{"additionalProperties":{},"type":"object"},"nullable":true,"type":"array"}},"type":"object"},"SaltEdgeCsvSchema":{"properties":{"account_id":{"type":"integer"},"amount":{"type":"number"},"category":{"type":"string"},"closing_balance":{"nullable":true,"type":"number"},"currency_code":{"type":"string"},"description":{"type":"string"},"made_on":{"format":"date","type":"string"},"payee":{"nullable":true,"type":"string"},"payer":{"nullable":true,"type":"string"},"transaction_id":{"type":"integer"}},"type":"object"},"SaveFunderIntegrationRequestSchema":{"properties":{"environment":{"enum":["staging","production"]},"form_values":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["environment","form_values"],"type":"object"},"ScorecardQueryParams":{"properties":{"date":{"description":"Cut-off date to consider transactions to for calculating scorecard (inclusive)","example":"2023-01-19","format":"date","nullable":true,"type":"string"},"named_date":{"description":"Qualitative description for date to calculate scorecard","enum":["end_user_created","end_user_last_updated","last_transaction","end_user_last_enriched","last_data_source_end_date_or_transaction_timestamp","custom_date",null],"example":"end_user_created","nullable":true,"type":"string"}},"type":"object"},"ScorecardSettings":{"properties":{"balance_prediction":{"type":"boolean"},"company_overview_layout":{"items":{"$ref":"#/components/schemas/WidgetGroup"},"type":"array"},"metrics_benchmarks":{"type":"boolean"}},"type":"object"},"SearchAttempt":{"properties":{"candidate_count":{"description":"Number of candidates this step returned.","type":"integer"},"candidate_refs":{"description":"References into candidates for every candidate returned by this search step.","items":{"$ref":"#/components/schemas/SearchAttemptCandidateRef"},"type":"array"},"inputs":{"allOf":[{"$ref":"#/components/schemas/SearchInputsUsed"}],"description":"Exact identifiers sent on this search step."},"is_resolving_match":{"description":"True on the search step whose match became the subject resolution.","type":"boolean"},"matched_group_id":{"description":"Opaque source group identifier for support investigations; null when unmatched.","nullable":true,"type":"string"},"outcome":{"description":"Search outcome: matched, no_match, one_candidate, multiple_candidates, verification_failed, or error.","enum":["matched","no_match","one_candidate","multiple_candidates","verification_failed","error"],"type":"string"},"outcome_reason":{"allOf":[{"$ref":"#/components/schemas/SearchAttemptOutcomeReason"}],"description":"Human-readable explanation of the search outcome; null when unavailable.","nullable":true},"resolved":{"description":"True when this search confidently resolved the subject and ended the search waterfall.","type":"boolean"},"search_method":{"description":"Search method: ssn_only, name_state_dob, name_address, name_state, corp_id, manual_recovery, or linked_entity_id (see the resolution method).","type":"string"},"top_relevance":{"description":"Source relevance score of the best hit; null when no candidate was returned.","nullable":true,"type":"integer"}},"required":["candidate_count","candidate_refs","inputs","is_resolving_match","outcome","resolved","search_method"],"type":"object"},"SearchAttemptCandidateRef":{"properties":{"id":{"description":"Reference to the matching entry in candidates.","type":"string"},"matched_address":{"description":"Address matched on this step; present only when it differs from the canonical entry.","type":"string"},"matched_aka_name":{"description":"AKA name matched on this step; present only when it differs from the canonical entry.","type":"string"},"rank":{"description":"Rank on this step; present only when it differs from the canonical entry.","type":"integer"},"relevance":{"description":"Relevance on this step; present only when it differs from the canonical entry.","type":"integer"},"score_total":{"description":"Match score on this step; present only when it differs from the canonical entry.","type":"number"}},"required":["id"],"type":"object"},"SearchAttemptOutcomeReason":{"properties":{"details":{"description":"Label and value pairs explaining the search outcome.","items":{"$ref":"#/components/schemas/SearchAttemptOutcomeReasonDetail"},"type":"array"},"label":{"description":"Summary of the search outcome.","type":"string"}},"required":["details","label"],"type":"object"},"SearchAttemptOutcomeReasonDetail":{"properties":{"label":{"description":"Display label for the outcome detail.","type":"string"},"value":{"description":"Value paired with the label; null when unavailable.","nullable":true}},"required":["label"],"type":"object"},"SearchInputsUsed":{"properties":{"address":{"description":"Address sent on this step; null when unused.","nullable":true,"type":"string"},"address_source":{"description":"Application address used: company_physical_address or company_billing_address.","enum":["company_physical_address","company_billing_address",null],"nullable":true,"type":"string"},"business_name":{"description":"The business name queried on this step; null on person attempts.","nullable":true,"type":"string"},"business_name_source":{"description":"Which name variant was queried; null on person attempts.","enum":["legal","dba","candidate_fallback","linked_address_fallback",null],"nullable":true,"type":"string"},"corporation_id":{"description":"Corporation identifier sent on this step; null when unused.","nullable":true,"type":"string"},"date_of_birth":{"description":"Date of birth sent on this step; null when unused.","format":"date","nullable":true,"type":"string"},"email":{"description":"Email sent on this step; null when unused.","nullable":true,"type":"string"},"filing_state":{"description":"Filing state sent on this step; null when unused.","nullable":true,"type":"string"},"fuzzy":{"description":"True when this step allowed fuzzy matching.","type":"boolean"},"name":{"description":"Person name sent on this step; null when unused.","nullable":true,"type":"string"},"phone":{"description":"Phone number sent on this step; null when unused.","nullable":true,"type":"string"},"ssn":{"description":"Masked SSN sent on this step; null when unused.","nullable":true,"type":"string"},"state":{"description":"State sent on this step; null when unused.","nullable":true,"type":"string"}},"required":["fuzzy"],"type":"object"},"SendEligibility":{"additionalProperties":false,"properties":{"detail":{"nullable":true,"readOnly":true,"type":"string"},"evidence":{"items":{"$ref":"#/components/schemas/FunderExclusionEvidence"},"nullable":true,"readOnly":true,"type":"array"},"reason":{"enum":["excluded","held","unconfigured","in_progress","ambiguous_attempt","sent","decided",null],"nullable":true,"readOnly":true},"sendable":{"readOnly":true,"type":"boolean"}},"type":"object"},"SingleNodeExecuteRequestSchema":{"properties":{"end_user_heron_id":{"type":"string"},"explicit_node_results":{"additionalProperties":{},"nullable":true,"type":"object"},"node_id":{"type":"string"},"reference_execution_heron_id":{"nullable":true,"type":"string"},"workflow_heron_id":{"type":"string"},"workflow_parameters":{"additionalProperties":{},"default":{},"type":"object"},"workflow_version_number":{"nullable":true,"type":"integer"}},"required":["end_user_heron_id","node_id","workflow_heron_id"],"type":"object"},"SingleNodeExecuteResponseSchema":{"properties":{"node_id":{"readOnly":true,"type":"string"},"status":{"readOnly":true,"type":"string"},"workflow_execution_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"SingleNodeExecutionListItemSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"readOnly":true,"type":"string"},"error":{"nullable":true,"readOnly":true},"result":{"nullable":true,"readOnly":true},"status":{"readOnly":true,"type":"string"},"workflow_execution_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"SingleNodeExecutionStatusSchema":{"properties":{"error":{"nullable":true,"readOnly":true},"result":{"nullable":true,"readOnly":true},"status":{"readOnly":true,"type":"string"}},"type":"object"},"SkippedDeal":{"properties":{"end_user_heron_id":{"readOnly":true,"type":"string"},"reason":{"enum":["not_found","not_backtestable_status"],"readOnly":true,"type":"string"}},"type":"object"},"SosPerson":{"additionalProperties":false,"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":["first_name","last_name"],"type":"object"},"SosSearchRequestSchema":{"additionalProperties":false,"properties":{"apply_name_filter":{"default":false,"type":"boolean"},"auto_select":{"default":true,"type":"boolean"},"business_name":{"type":"string"},"city":{"type":"string"},"include_ucc_data":{"default":false,"type":"boolean"},"person":{"$ref":"#/components/schemas/SosPerson"},"retry_id":{"type":"string"},"sos_id":{"type":"string"},"state":{"type":"string"},"street":{"type":"string"},"timeout":{"default":120,"minimum":1,"type":"integer"},"zip":{"type":"string"}},"type":"object"},"SourceVerification":{"properties":{"source":{"description":"The source this line speaks for.","enum":["tin","sos","court","background_check","web_presence","web_search","bank_statement","xactus","api","manual","broker_submission","crm","application"]},"source_inputs":{"additionalProperties":{"nullable":true,"type":"string"},"description":"What this source was searched on, keyed by the field name in that source's own spelling, such as `ein` and `legal_name` for the IRS or `name` and `state` for the registry. Null where the source was sent nothing, which is every line the deal stated itself: those are the input. **A key present with a null value means the field was sent and its value is not printed; a key absent means the field was not sent.** The two are different answers, and the reason this is a map rather than fixed columns: a background check is searched on an SSN that must never be echoed back, so its key carries no value. Not the same as `value`, which is what the source returned.","nullable":true,"type":"object"},"value":{"description":"The one value this source is read on, as it wrote it: the one that met the field's `value` where it states one, and its own leading answer where it does not. Null when it stated nothing, which `verification_status` then explains.","nullable":true,"type":"string"},"verification_status":{"description":"`agree` and `disagree` are this source read against what the deal claimed, not against `value`. `stated` marks the claim itself, which is compared against nothing: the application on every field it can state, and otherwise the first source this field prefers that spoke. `silent` means the source ran and returned no value for this field, `not_run` that no run of it reached the deal, and `cannot` that this source states no such field at all.","enum":["agree","disagree","stated","silent","not_run","cannot"]}},"type":"object"},"SourcedCompanyId":{"description":"One identifier, the authority's answer on it, and the source that stated it.","properties":{"country":{"description":"The country that issues this type of identifier, as a two-letter code. Null when the identifier belongs to no one country: a DUNS number is issued worldwide by one agency, so it says nothing about where the company is.","nullable":true,"type":"string"},"source":{"description":"The source this value was taken from. A list unions what every source stated, so the source sits on the value rather than on the field.","nullable":true,"type":"string"},"type":{"description":"Which identifier it is: `us_ein`, `duns`, `uk_company_number` or `vat`.","enum":["us_ein","us_taxpayer_number","duns","uk_company_number","vat"]},"value":{"description":"The identifier as the source states it.","type":"string"},"verified":{"description":"What an authority said when asked about this identifier under this business's name: `matched` or `not_matched`. Null when no check was run for it, and always null on the identifier inside a `tax_id_verifications` row, which is the check itself.","enum":["matched","not_matched",null],"nullable":true}},"type":"object"},"SourcedDateValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"description":"Source-provided date in ISO 8601 format.","format":"date","type":"string"}},"required":["source","value"],"type":"object"},"SourcedEmail":{"description":"One email address, and the source that stated it.","properties":{"email_address":{"description":"The address as the source states it.","type":"string"},"source":{"description":"The source this value was taken from. A list unions what every source stated, so the source sits on the value rather than on the field.","nullable":true,"type":"string"}},"type":"object"},"SourcedIndustryCodeValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"allOf":[{"$ref":"#/components/schemas/FirmographicIndustryCode"}],"description":"Industry classification supplied by the source."}},"required":["source","value"],"type":"object"},"SourcedIntegerValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"description":"Source-provided whole-number value.","type":"integer"}},"required":["source","value"],"type":"object"},"SourcedMSAValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"allOf":[{"$ref":"#/components/schemas/FirmographicMSA"}],"description":"Metropolitan statistical area supplied by the source."}},"required":["source","value"],"type":"object"},"SourcedNationalId":{"description":"One national identifier, and the source that stated it.","properties":{"country":{"description":"ISO country code of the issuer.","type":"string"},"expires_on":{"description":"Expiry, where the source states one.","format":"date","nullable":true,"type":"string"},"source":{"description":"The source this value was taken from. A list unions what every source stated, so the source sits on the value rather than on the field.","nullable":true,"type":"string"},"state":{"description":"Issuing state, for a driving licence; null otherwise.","nullable":true,"type":"string"},"type":{"description":"Which identifier this is: `us_ssn`, `ca_sin`, `uk_nino`, `driving_licence` or `passport`.","enum":["us_ssn","ca_sin","uk_nino","driving_licence","passport"]},"value":{"description":"The identifier as stated.","type":"string"}},"type":"object"},"SourcedNationality":{"description":"One nationality, and the source that stated it.","properties":{"nationality":{"description":"The nationality as the source states it.","type":"string"},"source":{"description":"The source this value was taken from. A list unions what every source stated, so the source sits on the value rather than on the field.","nullable":true,"type":"string"}},"type":"object"},"SourcedPersonValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"allOf":[{"$ref":"#/components/schemas/FirmographicPerson"}],"description":"Person and role supplied by the source."}},"required":["source","value"],"type":"object"},"SourcedStringValue":{"properties":{"as_of":{"description":"Date of the record that supplied the value, in ISO 8601 format. Null where the source states no date, which is always the case for CLEAR Business Overview.","format":"date","nullable":true,"type":"string"},"filing_id":{"description":"Groups the readings that came from the same corporate filing, so a business with several filings can show each one's status, dates and agent together. Set only on Corporate Filing values; null for every other source. Stable within a response, not across responses.","nullable":true,"type":"string"},"note":{"description":"Any further wording the source attached to the figure, such as whether principals are counted in an employee total. Source-verbatim; null when the source added nothing.","nullable":true,"type":"string"},"qualifier":{"description":"How the source derived the figure: ACTUAL (reported), ESTIMATED (approximated by the source), or MODELED (statistically inferred). Only ever set on employee and revenue figures; null everywhere else.","enum":["ACTUAL","ESTIMATED","MODELED",null],"nullable":true,"type":"string"},"source":{"description":"Which record supplied this value. Corporate Filing is a company registry filing; Dun & Bradstreet and Worldbase are commercial business registers; CLEAR Business Profile is aggregated trade and public-record data; CLEAR Business Overview is a combined summary record. Sources are not reconciled \u2014 two sources may disagree on the same field.","enum":["CLEAR Business Overview","CLEAR Business Profile","Corporate Filing","Dun & Bradstreet","Worldbase"],"type":"string"},"value":{"description":"Source-provided text value.","type":"string"}},"required":["source","value"],"type":"object"},"SourcedWebsite":{"description":"One website, and the source that stated it.","properties":{"source":{"description":"The source this value was taken from. A list unions what every source stated, so the source sits on the value rather than on the field.","nullable":true,"type":"string"},"website":{"description":"The address as the source states it.","type":"string"}},"type":"object"},"StandaloneProcessFileSchema":{"properties":{"expected_file_class":{"description":"Expected file classification (e.g., 'bank_statement')","nullable":true,"type":"string"},"file_content_base64":{"description":"Base64 encoded file content","type":"string"},"filename":{"description":"Original filename (helps with MIME type detection)","type":"string"},"reference_id":{"description":"Reference ID for tracking","type":"string"}},"required":["file_content_base64","filename","reference_id"],"type":"object"},"StartEnrichEndUserResponseSchema":{"properties":{"end_user_id":{"type":"integer"},"enricher_name":{"type":"string"}},"required":["end_user_id","enricher_name"],"type":"object"},"StringCheck":{"properties":{"auto_decline":{"default":false,"type":"boolean"},"decline_code":{"description":"The CRM's identifier for this decline reason, e.g. a LendSaas reason id. Left unset, the CRM sync falls back to this check's decline_description.","nullable":true,"type":"string"},"decline_description":{"nullable":true,"type":"string"},"email_template_name":{"nullable":true,"type":"string"},"ignore_metric_availability":{"default":false,"type":"boolean"},"is_mandatory":{"default":false,"type":"boolean"},"match_count":{"nullable":true,"type":"integer"},"on_failure":{"default":"fail","enum":["fail","review_required"]},"pass_description":{"nullable":true,"type":"string"},"transaction_scope":{"allOf":[{"$ref":"#/components/schemas/TransactionScope"}],"nullable":true},"type":{"enum":["equal","not_equal","starts_with","starts_with_any_of","does_not_start_with_any_of","contains","does_not_start_with","does_not_contain","is_in","is_not_in","has_none_of","has_any_of","has_fewer_than_n_matches","has_more_than_n_matches"]},"value":{"type":"string"}},"type":"object"},"SubmissionParserExternal":{"properties":{"description":{"type":"string"},"heron_id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"type":"object"},"SubmitFunderSubmissionRequestSchema":{"additionalProperties":false,"properties":{"resend":{"default":false,"description":"Resend a settled lane with a successful production attempt. Requires use_sandbox=false.","type":"boolean"},"selected_file_heron_ids":{"items":{"type":"string"},"nullable":true,"type":"array"},"use_sandbox":{"type":"boolean"}},"required":["use_sandbox"],"type":"object"},"SubmitFunderSubmissionResponseSchema":{"additionalProperties":false,"properties":{"submission_heron_id":{"readOnly":true,"type":"string"}},"type":"object"},"SubmittingBroker":{"additionalProperties":false,"properties":{"company":{"nullable":true,"readOnly":true,"type":"string"},"domain":{"nullable":true,"readOnly":true,"type":"string"},"email":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"TagPatchSchema":{"properties":{"color":{"description":"Optional display color as a six-digit hex code such as #1a2b3c. Pass null to clear.","nullable":true,"type":"string"},"description":{"description":"Optional human-readable description of the tag. Pass null to clear.","nullable":true,"type":"string"},"name":{"description":"Identifier normalized to lowercase: alphanumeric plus '_', '-', ':', up to 140 chars. Unique to your account (case-insensitive).","type":"string"}},"type":"object"},"TagSchema":{"properties":{"color":{"description":"Optional display color as a six-digit hex code such as #1a2b3c, normalized to lowercase.","nullable":true,"type":"string"},"description":{"description":"Optional human-readable description of the tag.","nullable":true,"type":"string"},"heron_id":{"description":"Unique identifier for the tag","readOnly":true,"type":"string"},"is_system_managed":{"description":"Whether the tag is managed by Heron and cannot be changed through the tag API.","readOnly":true,"type":"boolean"},"name":{"description":"Identifier normalized to lowercase: alphanumeric plus '_', '-', ':', up to 140 chars. Unique to your account (case-insensitive).","type":"string"}},"required":["name"],"type":"object"},"TaxReturn":{"properties":{"balance_sheet_report":{"allOf":[{"$ref":"#/components/schemas/BalanceSheetReport"}],"nullable":true},"form_name":{"nullable":true,"type":"string"},"page_indexes":{"items":{"type":"integer"},"nullable":true,"type":"array"},"pnl_report":{"allOf":[{"$ref":"#/components/schemas/PnlReport"}],"nullable":true}},"type":"object"},"TaxReturnsSchema":{"properties":{"tax_returns":{"items":{"$ref":"#/components/schemas/TaxReturn"},"nullable":true,"type":"array"}},"type":"object"},"Transaction":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories_default":{"description":"Category of transaction that you may have received from other sources","example":"shopping","nullable":true,"type":"string","writeOnly":true},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"date":{"description":"The date of the transaction; 'timestamp' field takes priority over 'date'","example":"2020-04-27","format":"date","nullable":true,"type":"string","writeOnly":true},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"nullable":true,"type":"string"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"Transaction1":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories_default":{"description":"Category of transaction that you may have received from other sources","example":"shopping","nullable":true,"type":"string","writeOnly":true},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"date":{"description":"The date of the transaction; 'timestamp' field takes priority over 'date'","example":"2020-04-27","format":"date","nullable":true,"type":"string","writeOnly":true},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"nullable":true,"type":"string"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"Transaction2":{"properties":{"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"}},"type":"object"},"Transaction3":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"TransactionAnnotation":{"properties":{"annotator":{"description":"Annotator type","example":"predicted","type":"string"},"confidence":{"description":"The confidence associated with the category annotation","example":0.5,"type":"number"},"heron_id":{"description":"Unique ID of category; generated by Heron Data","example":"ctg_k4uyDaNVgQuztHZ8GqNkM8","type":"string"},"label":{"description":"Label of category","example":"Rent","type":"string"},"model_version":{"description":"The model version that produced the categorisation","example":"a2c9c3c2-3083-4558-842a-b27cdf70201a","type":"string"}},"type":"object"},"TransactionDeleteReference":{"properties":{"transactions":{"description":"list of transactions (only ids) that have been deleted","items":{"$ref":"#/components/schemas/Transaction2"},"type":"array"}},"type":"object"},"TransactionDeleteWebhook":{"properties":{"created":{"description":"time webhook was sent","example":"2026-10-06T22:12:43.297731","format":"date-time","type":"string"},"data":{"allOf":[{"$ref":"#/components/schemas/TransactionDeleteReference"}],"description":"payload of the webhook"},"meta":{"additionalProperties":{},"description":"meta information about the webhook","type":"object"},"topic":{"description":"topic of webhook","example":"transactions.deleted","type":"string"}},"type":"object"},"TransactionEnriched":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"account_number":{"description":"The account number of the data source account associated with the transaction","example":"1234567890","nullable":true,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"annotation":{"allOf":[{"$ref":"#/components/schemas/Annotation"}],"description":"The category annotation associated with the transaction"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories_default":{"description":"Category of transaction that you may have received from other sources","example":"shopping","nullable":true,"type":"string","writeOnly":true},"counterparty":{"description":"The counterparty associated with the transaction, if available","example":"GOOGLE","nullable":true,"type":"string"},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"data_source_account_heron_id":{"description":"The heron ID of the data source account associated with the transaction","example":"dsa_GtdNKAdUQTdgFZ5PkdLU29","nullable":true,"type":"string"},"data_source_heron_id":{"description":"The heron ID of the data source associated with the transaction","example":"dso_gYTtu9sdfgu7jiWDZHcuDz","nullable":true,"type":"string"},"date":{"description":"The date of the transaction; 'timestamp' field takes priority over 'date'","example":"2020-04-27","format":"date","nullable":true,"type":"string","writeOnly":true},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"nullable":true,"type":"string"},"features":{"allOf":[{"$ref":"#/components/schemas/TransactionFeatures"}],"description":"Features calculated from transaction"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"last_updated":{"description":"When the transaction was last updated, either by updating its enrichments or the values of the transaction itself","example":"2026-10-06T22:12:43.286994+00:00","format":"date-time","type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"merchant":{"allOf":[{"$ref":"#/components/schemas/Merchant"}],"description":"The merchant associated with the transaction"},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"TransactionFeatures":{"properties":{"description_clean":{"description":"The cleaned description of the transaction","example":"GOOGLE ADS","type":"string"},"duplicate_of_id":{"description":"Indicates that the transaction is a duplicate and gives the heron_id of the original","example":"txn_fjgSkEuesK6i3oaPqP4tvW"},"has_matching_transaction":{"description":"Whether the transaction is a transfer; requires end_user_id and timestamp to be present","type":"boolean"},"is_payment_processing":{"description":"Whether enrichment matched a payment-processing heuristic while the active category was in the revenue analytics group. False can also mean the transaction has not been evaluated.","readOnly":true,"type":"boolean"},"is_potential_duplicate":{"description":"Indicates whether the transaction has another transaction similar to it","readOnly":true,"type":"boolean"},"is_recurring":{"description":"Whether the transaction is recurring or not; requires end_user_id and timestamp to be present","type":"boolean"}},"type":"object"},"TransactionFeedbackParams":{"properties":{"trigger_webhook":{"default":true,"description":"If true, enables the triggering of transaction_updated webhook. Set to false to suppress trigger. Default true","type":"boolean"}},"type":"object"},"TransactionFeedbackSchema":{"properties":{"category":{"allOf":[{"$ref":"#/components/schemas/CategoryFeedback"}],"default":{},"example":{"heron_id":"ctg_UWaX6qQ4zJcTp42K6MWrYL","label":"Insurance"}},"merchant":{"allOf":[{"$ref":"#/components/schemas/MerchantFeedback"}],"default":{},"example":{"heron_id":"mrc_Wqe96sebywnNqTkdbE7Y4H","is_correct":false,"name":"Spotify"}},"source":{"description":"your identifier for where the feedback comes from e.g. bob_the_underwriter","maxLength":120,"nullable":true,"type":"string"}},"type":"object"},"TransactionGetOutput":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"account_number":{"description":"The account number associated with the transaction","example":"1234567890","type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories":{"description":"The category associated with the transaction","items":{"$ref":"#/components/schemas/TransactionAnnotation"},"type":"array"},"counterparty":{"description":"The counterparty associated with the transaction, if available","example":"GOOGLE","nullable":true,"type":"string"},"created":{"description":"When transaction was created in Heron system","example":"2026-10-06T22:12:43.292498","format":"date-time","type":"string"},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"data_source_account_heron_id":{"description":"Unique ID of the transaction's data source account","example":"dsa_BbNeoQaPTsmpXpNyEvo8Ut","readOnly":true,"type":"string"},"data_source_heron_id":{"description":"Unique ID of the transaction's data source","example":"dso_9xjL6wjUcNG6m8ekShubWP","readOnly":true,"type":"string"},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"description_clean":{"description":"The cleaned description of the transaction","example":"GOOGLE ADS","type":"string"},"duplicate_of_id":{"description":"Indicates that the transaction is a duplicate and gives the heron_id of the original","example":"txn_fjgSkEuesK6i3oaPqP4tvW"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"nullable":true,"type":"string"},"has_matching_transaction":{"description":"Whether the transaction is a transfer; requires end_user_id and timestamp to be present","type":"boolean"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"is_payment_processing":{"description":"Whether enrichment matched a payment-processing heuristic while the active category was in the revenue analytics group. False can also mean the transaction has not been evaluated.","readOnly":true,"type":"boolean"},"is_potential_duplicate":{"description":"Indicates whether the transaction has another transaction similar to it","readOnly":true,"type":"boolean"},"is_recurring":{"description":"Whether the transaction is recurring or not; requires end_user_id and timestamp to be present","type":"boolean"},"last_updated":{"description":"When transaction was last updated in Heron system; could be from recategorisation or attribute updates","example":"2026-10-06T22:12:43.292526","format":"date-time","type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"merchant":{"allOf":[{"$ref":"#/components/schemas/Merchant"}],"description":"The merchant associated with the transaction"},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"payment_processor":{"allOf":[{"$ref":"#/components/schemas/PaymentProcessor"}],"description":"The payment processor associated with the transaction"},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"TransactionPostAsync":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories_default":{"description":"Category of transaction that you may have received from other sources","example":"shopping","nullable":true,"type":"string","writeOnly":true},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"type":"string"},"date":{"description":"The date of the transaction; 'timestamp' field takes priority over 'date'","example":"2020-04-27","format":"date","nullable":true,"type":"string","writeOnly":true},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"type":"string"},"heron_id":{"description":"Unique ID of transaction; generated by Heron Data","example":"txn_9VbGmk5gxEB5CvdxAGAFYT","readOnly":true,"type":"string"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["account_id","amount","currency","description","end_user_id","reference_id"],"type":"object"},"TransactionPostOutput":{"properties":{"account_id":{"description":"Your unique ID for account associated with transaction","example":"checking_account_202348","maxLength":400,"nullable":true,"type":"string"},"amount":{"description":"Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.","example":-42.42,"type":"number"},"balance":{"description":"The running balance of the account after transaction ocurred","example":423.0,"nullable":true,"type":"number"},"categories":{"description":"The category associated with the transaction","items":{"$ref":"#/components/schemas/TransactionAnnotation"},"type":"array"},"currency":{"description":"ISO 4217 currency code","example":"USD","maxLength":3,"minLength":3,"nullable":true,"type":"string"},"description":{"description":"The text description for the transaction","example":"GOOGLE *ADS12340929 cc@google.com US","type":"string"},"description_clean":{"description":"The cleaned description of the transaction","example":"GOOGLE ADS","type":"string"},"duplicate_of_id":{"description":"Indicates that the transaction is a duplicate and gives the heron_id of the original","example":"txn_fjgSkEuesK6i3oaPqP4tvW"},"end_user_id":{"description":"Your unique ID for end user associated with transaction","example":"my_best_customer_203948","maxLength":140,"nullable":true,"type":"string"},"has_matching_transaction":{"description":"Whether the transaction is a transfer; requires end_user_id and timestamp to be present","type":"boolean"},"is_payment_processing":{"description":"Whether enrichment matched a payment-processing heuristic while the active category was in the revenue analytics group. False can also mean the transaction has not been evaluated.","readOnly":true,"type":"boolean"},"is_potential_duplicate":{"description":"Indicates whether the transaction has another transaction similar to it","readOnly":true,"type":"boolean"},"is_recurring":{"description":"Whether the transaction is recurring or not; requires end_user_id and timestamp to be present","type":"boolean"},"mcc_code":{"description":"Merchant category code associated with transaction that you may have received from other sources","nullable":true,"pattern":"^\\d{4}$","type":"string","writeOnly":true},"merchant":{"allOf":[{"$ref":"#/components/schemas/Merchant"}],"description":"The merchant associated with the transaction"},"order":{"description":"If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction","nullable":true,"type":"integer","writeOnly":true},"payment_processor":{"allOf":[{"$ref":"#/components/schemas/PaymentProcessor"}],"description":"The payment processor associated with the transaction"},"reference_id":{"description":"Your unique ID for transaction","example":"my_favourite_transaction_231098","maxLength":140,"minLength":1,"nullable":true,"type":"string"},"request_id":{"description":"ID associated with request, e.g., all transactions in same POST request will have same request_id","example":"req_PgbPSNmhysXskvmNCSLuG5","nullable":true,"readOnly":true,"type":"string"},"timestamp":{"description":"The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'","example":"2021-11-12T10:38:05Z","format":"date-time","nullable":true,"type":"string"},"transaction_code":{"description":"Code associated with transaction to indicate the type of transaction","example":"card","maxLength":140,"nullable":true,"type":"string"}},"required":["amount","description"],"type":"object"},"TransactionScope":{"properties":{"file_classes":{"items":{"type":"string"},"nullable":true,"type":"array"},"min_reconciliation_status":{"enum":["failed","not_possible","reconciled",null],"nullable":true,"type":"string"}},"type":"object"},"TransactionsPostAsyncSchema":{"properties":{"balances":{"description":"Bank account balance information for a particular account_id. The balance here must be the *latest balance* after all the transactions in this batch have been applied.","items":{"$ref":"#/components/schemas/AccountBalance1"},"nullable":true,"type":"array"},"transactions":{"items":{"$ref":"#/components/schemas/TransactionPostAsync"},"minItems":1,"type":"array"}},"required":["transactions"],"type":"object"},"TransactionsPostSyncSchema":{"properties":{"transactions":{"items":{"$ref":"#/components/schemas/Transaction1"},"minItems":1,"type":"array"}},"required":["transactions"],"type":"object"},"TriggerTestRequestSchema":{"properties":{"environment":{"default":"staging","enum":["staging","production"]}},"type":"object"},"TriggerTestResponseSchema":{"properties":{"funder_submission_heron_id":{"type":"string"}},"required":["funder_submission_heron_id"],"type":"object"},"UCCFilingEntrySchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"collateral_description":{"description":"Collateral description on the filing.","nullable":true,"type":"string"},"collateral_descriptions":{"description":"Collateral descriptions across the filing chain.","items":{"type":"string"},"type":"array"},"debtor_address":{"description":"Address of the debtor.","nullable":true,"type":"string"},"debtor_name":{"description":"Debtor named on the filing.","nullable":true,"type":"string"},"expire_date":{"description":"Filing lapse date; null when unavailable.","format":"date","nullable":true,"type":"string"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_number":{"description":"Filing reference number.","nullable":true,"type":"string"},"filing_office_name":{"description":"Office where the filing was recorded.","nullable":true,"type":"string"},"filing_state":{"description":"State where the filing was recorded.","nullable":true,"type":"string"},"filing_type":{"description":"Filing type, such as FINANCING STATEMENT, CONTINUATION, or TERMINATION.","nullable":true,"type":"string"},"in_recent_cluster":{"description":"True when the filing is among at least three new UCC liens in the last six months.","type":"boolean"},"is_recent":{"description":"True when the filing originated recently.","type":"boolean"},"original_file_number_full":{"description":"Full reference for the original filing in the chain.","nullable":true,"type":"string"},"record_type":{"description":"Source-provided record class.","nullable":true,"type":"string"},"reference_file_number":{"description":"Reference linking this row to the original filing in the chain.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"secured_party_address":{"description":"Address of the secured party.","nullable":true,"type":"string"},"secured_party_name":{"description":"Name of the secured party.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source_entry_id":{"description":"Stable reference for the underlying source row; null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"UCCRecordSchema":{"description":"A background-check finding. Risk and severity carry the same none, low, medium, or high tier.","properties":{"collateral_description":{"description":"Collateral description on the filing.","nullable":true,"type":"string"},"collateral_descriptions":{"description":"Collateral descriptions across the filing chain.","items":{"type":"string"},"type":"array"},"debtor_address":{"description":"Address of the debtor.","nullable":true,"type":"string"},"debtor_name":{"description":"Debtor named on the filing.","nullable":true,"type":"string"},"detail":{"allOf":[{"$ref":"#/components/schemas/BackgroundCheckRecordDetail"}],"description":"Only populated when include_section_detail=true is passed on the request","nullable":true},"entry_count":{"description":"Number of underlying source entries combined into this record.","type":"integer"},"expire_date":{"description":"Filing lapse date; null when unavailable.","format":"date","nullable":true,"type":"string"},"file_date":{"description":"Filing date; null when unavailable.","format":"date","nullable":true,"type":"string"},"filing_number":{"description":"Filing reference number.","nullable":true,"type":"string"},"filing_office_name":{"description":"Office where the filing was recorded.","nullable":true,"type":"string"},"filing_state":{"description":"State where the filing was recorded.","nullable":true,"type":"string"},"filing_type":{"description":"Filing type, such as FINANCING STATEMENT, CONTINUATION, or TERMINATION.","nullable":true,"type":"string"},"in_recent_cluster":{"description":"True when the filing is among at least three new UCC liens in the last six months.","type":"boolean"},"is_active":{"description":"True when the filing chain is active.","type":"boolean"},"is_recent":{"description":"True when the filing originated recently.","type":"boolean"},"is_terminated":{"description":"True when the filing chain is terminated.","type":"boolean"},"original_file_number_full":{"description":"Full reference for the original filing in the chain.","nullable":true,"type":"string"},"record_type":{"description":"Source-provided record class.","nullable":true,"type":"string"},"reference_file_number":{"description":"Reference linking this row to the original filing in the chain.","nullable":true,"type":"string"},"risk":{"description":"Record risk tier.","enum":["none","low","medium","high"]},"secured_party_address":{"description":"Address of the secured party.","nullable":true,"type":"string"},"secured_party_name":{"description":"Name of the secured party.","nullable":true,"type":"string"},"severity":{"description":"Record severity tier, mirroring risk.","readOnly":true},"source_entries":{"description":"Underlying source rows combined into this record.","items":{"$ref":"#/components/schemas/UCCFilingEntrySchema"},"type":"array"},"source_entry_ids":{"description":"References for the underlying source rows combined into this record.","items":{"type":"string"},"type":"array"},"status":{"description":"UCC filing-chain status: active, terminated, expired, or unknown.","enum":["active","terminated","expired","unknown"]}},"type":"object"},"UpdateEndUserEntityAttributeSchema":{"properties":{"attribute_description":{"type":"string"},"attribute_name":{"type":"string"},"attribute_type":{"enum":["float","int","decimal","string","date","datetime","bool"]},"is_dedupe_key":{"type":"boolean"},"reconciliation_config":{"additionalProperties":{},"type":"object"},"reconciliation_strategy":{"enum":["sort_order","llm","comparison","concatenate_lists"]}},"type":"object"},"UpdateEndUserEntityAttributeSourceSchema":{"properties":{"sort_order":{"type":"integer"},"source_config":{"additionalProperties":{},"type":"object"},"source_type":{"enum":["parsed_end_user_file","api","rel_6","end_user_enricher","company_attribute","static_value","end_user_query","broker_submission_api","crm"]}},"type":"object"},"UpdateEndUserEntitySchema":{"properties":{"display_order":{"type":"integer"},"entity_description":{"type":"string"},"entity_name":{"type":"string"},"entity_post_processor_configs":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"is_list":{"type":"boolean"},"saved_query_heron_id":{"nullable":true,"type":"string"}},"type":"object"},"UpdateFileRenameRuleSchema":{"properties":{"file_name_template":{"type":"string"},"is_enabled":{"type":"boolean"},"variables":{"default":[],"items":{"$ref":"#/components/schemas/VariableDefinition"},"type":"array"}},"required":["file_name_template","is_enabled"],"type":"object"},"UpdateFunderIntegrationRequestSchema":{"properties":{"channel":{"enum":["integration","email",null],"nullable":true},"submission_cc_email_addresses":{"items":{"type":"string"},"nullable":true,"type":"array"},"submission_email_address":{"nullable":true,"type":"string"},"submission_email_subject_prefix":{"nullable":true,"type":"string"}},"type":"object"},"UpdateFunderSchema":{"additionalProperties":false,"properties":{"aliases":{"items":{"type":"string"},"nullable":true,"type":"array"},"classification_instructions":{"nullable":true,"type":"string"},"email_domains":{"items":{"type":"string"},"nullable":true,"type":"array"},"extraction_instructions":{"nullable":true,"type":"string"},"name":{"minLength":1,"type":"string"},"offer_email_instructions":{"nullable":true,"type":"string"},"offer_portal_instructions":{"nullable":true,"type":"string"},"offer_source":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_channel":{"enum":["email","api","web_portal","all_offers","crm_lendsaas",null],"nullable":true,"type":"string"},"submission_email_address":{"nullable":true,"type":"string"},"user_id":{"type":"integer"}},"type":"object"},"UpsertEndUserEntityAttributeValueSchema":{"properties":{"attribute_heron_id":{"type":"string"},"source_heron_id":{"type":"string"},"value":{"nullable":true}},"required":["attribute_heron_id","source_heron_id","value"],"type":"object"},"UpsertFunderSubmissionRequestSchema":{"additionalProperties":false,"properties":{"end_user_heron_id":{"type":"string"},"funder_heron_id":{"type":"string"}},"required":["end_user_heron_id","funder_heron_id"],"type":"object"},"User":{"properties":{"alias":{"type":"string"},"available_deal_stages":{"description":"Deal stages this tenant's pipeline can produce; empty for non-broker use cases.","items":{"enum":["ready","missing_docs","shopped","offers_in"]},"readOnly":true,"type":"array"},"created":{"format":"date-time","readOnly":true,"type":"string"},"email":{"type":"string"},"environment":{"enum":["dev","prod","internal"],"type":"string"},"id":{"readOnly":true,"type":"integer"},"is_active":{"default":true,"type":"boolean"},"is_self_sign_up":{"nullable":true,"type":"boolean"},"last_updated":{"format":"date-time","readOnly":true,"type":"string"},"onboarding_data":{"additionalProperties":{},"nullable":true,"type":"object"},"onboarding_step":{"enum":["require_email_verification","require_company_info","require_file_classes","require_rename_rules","require_file_upload","complete",null],"nullable":true},"onboarding_step_initial_data":{"additionalProperties":{},"nullable":true,"type":"object"},"organization_id":{"type":"integer"},"password":{"type":"string"},"profit_and_loss_layout":{"nullable":true},"settings":{"$ref":"#/components/schemas/UserSettings"},"username":{"type":"string"}},"required":["email","organization_id","username"],"type":"object"},"UserLogoBase64Schema":{"properties":{"file_b64":{"description":"Base64 encoded logo file","type":"string"},"mime_type":{"description":"MIME type of the logo file","type":"string"}},"type":"object"},"UserLogoFileSchema":{"properties":{"filename":{"type":"string"},"user_id":{"type":"string"}},"type":"object"},"UserLogoUploadSchema":{"properties":{"file_base64":{"description":"Base64 encoded file bytes","type":"string"},"filename":{"description":"Name of file","type":"string"}},"required":["file_base64","filename"],"type":"object"},"UserMerchantGroupSchema":{"properties":{"group_id":{"type":"string"},"merchant_heron_id":{"type":"string"},"merchant_name":{"type":"string"}},"required":["merchant_heron_id","merchant_name"],"type":"object"},"UserMerchantGroupsSchema":{"properties":{"custom_merchants":{"default":[],"items":{"$ref":"#/components/schemas/UserMerchantGroupSchema"},"type":"array"},"pending_merchants":{"default":[],"items":{"$ref":"#/components/schemas/UserMerchantGroupSchema"},"type":"array"},"rejected_merchants":{"default":[],"items":{"$ref":"#/components/schemas/UserMerchantGroupSchema"},"type":"array"}},"type":"object"},"UserModifiableSettings":{"properties":{"balance_sheet_categories":{"$ref":"#/components/schemas/BalanceSheetCategories"},"bank_statement_summary_columns":{"items":{"type":"string"},"nullable":true,"type":"array"},"disable_data_export":{"type":"boolean"},"financials_metrics":{"additionalProperties":{"$ref":"#/components/schemas/MetricSpec"},"type":"object"},"industry_naics_enabled":{"type":"boolean"},"low_balance_days_threshold":{"type":"number"},"pnl_categories":{"$ref":"#/components/schemas/PnLCategories"},"query_reports":{"items":{"$ref":"#/components/schemas/QueryReportTabGroup"},"type":"array"},"required_revenue_per_month":{"type":"integer"},"restricted_industries":{"items":{"$ref":"#/components/schemas/RestrictedIndustry"},"type":"array"},"transactions_review_enabled":{"type":"boolean"},"use_new_company_layout":{"type":"boolean"},"use_new_end_user_summary_table":{"type":"boolean"},"use_new_end_user_table":{"type":"boolean"}},"type":"object"},"UserSettings":{"properties":{"annotations":{"$ref":"#/components/schemas/AnnotationSettings"},"api_version":{"type":"string"},"cache_global_enrich":{"type":"boolean"},"currency_iso_code":{"enum":["GBP","USD","EUR","CAD","AUD"],"type":"string"},"data_retention_days":{"minimum":1,"nullable":true,"type":"integer"},"data_retention_turned_on":{"type":"boolean"},"email_domains":{"items":{"type":"string"},"type":"array"},"enabled_enrichers":{"items":{"type":"string"},"type":"array"},"end_user_entities":{"$ref":"#/components/schemas/EndUserEntitiesSettings"},"end_user_query_static_csvs":{"additionalProperties":{"type":"string"},"description":"Static CSV configurations for end user queries. Dict mapping table_name to gcs_path.","type":"object"},"enrich_global_ttl_days":{"minimum":1,"type":"integer"},"enricher_inputs_mapping":{"additionalProperties":{},"description":"Mapping of enricher names to input field names. Used to map LLM enricher inputs to end user fields.","type":"object"},"features":{"$ref":"#/components/schemas/FeatureSettings"},"files":{"$ref":"#/components/schemas/FileSettings"},"high_priority_async_slots":{"type":"integer"},"inbound_emails":{"$ref":"#/components/schemas/InboundEmailSettings"},"include_in_analytics":{"type":"boolean"},"ip_whitelist":{"items":{"type":"string"},"nullable":true,"type":"array"},"is_priority_async":{"type":"boolean"},"legacy_data_sources":{"type":"boolean"},"modifiable":{"$ref":"#/components/schemas/ModifiableSettings"},"outbound_emails":{"$ref":"#/components/schemas/OutboundEmailSettings"},"pdf":{"$ref":"#/components/schemas/PdfSettings"},"plaid":{"$ref":"#/components/schemas/PlaidSettings"},"rate_limit":{"pattern":"^[0-9]{1,4}/minute$","type":"string"},"restrict_api_keys_in_dashboard":{"type":"boolean"},"restrict_downloading_data":{"type":"boolean"},"retry_global_enrich":{"type":"boolean"},"scorecard":{"$ref":"#/components/schemas/ScorecardSettings"},"slack_channel_id":{"nullable":true,"pattern":"^[CG][A-Z0-9]+(?![\\s\\S])","type":"string"},"sync_async_enrich":{"type":"boolean"},"sync_enrich":{"type":"boolean"},"use_case_type":{"enum":["iso_underwriting","non_iso_underwriting","commercial_insurance","commercial_law","equipment_finance","broker","other"],"type":"string"},"use_ses_outbound":{"type":"boolean"}},"type":"object"},"UserWorkflowSchema":{"properties":{"alerts_muted_until":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"dashboard_trigger_enabled":{"readOnly":true,"type":"boolean"},"dashboard_trigger_label":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_default":{"readOnly":true,"type":"boolean"},"name":{"readOnly":true,"type":"string"},"owners":{"allOf":[{"$ref":"#/components/schemas/FlowmingoWorkflowOwners"}],"readOnly":true}},"type":"object"},"ValueSetOptionSchema":{"properties":{"label":{"description":"The display name for the value","type":"string"},"value":{"description":"The value used in the check","type":"string"}},"type":"object"},"VariableDefinition":{"properties":{"description":{"type":"string"},"examples":{"items":{"type":"string"},"type":"array"},"key":{"type":"string"},"name":{"type":"string"}},"required":["description","examples","key","name"],"type":"object"},"VehicleOwnerSchema":{"properties":{"address":{"description":"Address reported for the vehicle owner; null when unavailable.","nullable":true,"type":"string"},"name":{"description":"Name of the vehicle owner; null when unavailable.","nullable":true,"type":"string"},"owner_type":{"description":"The owner's role as the source reports it, uppercase, such as REGISTRANT, LESSEE or LIENHOLDER. On real-time registrations with no reported role it is REGISTERED, SECONDARY or ADDITIONAL, from the owner's position on the registration. Null when unavailable.","nullable":true,"type":"string"}},"type":"object"},"VerificationResponseSchema":{"properties":{"business":{"allOf":[{"$ref":"#/components/schemas/BusinessVerification"}],"description":"The company the deal applied as. Null when no source named one, which leaves nothing to verify.","nullable":true},"owners":{"description":"Every person the deal's sources put at a share of the company, best-attested first. The ones a form declared come before the ones only a source found.","items":{"$ref":"#/components/schemas/OwnerVerification"},"type":"array"}},"type":"object"},"VoidCheckResultSchema":{"properties":{"account_number":{"nullable":true,"type":"string"},"address_city":{"nullable":true,"type":"string"},"address_line_1":{"nullable":true,"type":"string"},"address_state":{"enum":["AK","AL","AR","AZ","CA","CO","CT","DC","DE","FL","GA","HI","IA","ID","IL","IN","KS","KY","LA","MA","MD","ME","MI","MN","MO","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY","PR",null],"nullable":true,"type":"string"},"address_zip":{"nullable":true,"type":"string"},"bank_name":{"nullable":true,"type":"string"},"check_number":{"nullable":true,"type":"string"},"company_name":{"nullable":true,"type":"string"},"routing_number":{"nullable":true,"type":"string"}},"type":"object"},"WebhookDeliveryDetailSchema":{"properties":{"end_user_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"http_status":{"nullable":true,"readOnly":true,"type":"integer"},"occurred_at":{"format":"date-time","readOnly":true,"type":"string"},"payload":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"response_text":{"nullable":true,"readOnly":true,"type":"string"},"response_truncated":{"readOnly":true,"type":"boolean"},"status":{"readOnly":true,"type":"string"},"topic":{"nullable":true,"readOnly":true,"type":"string"},"webhook":{"allOf":[{"$ref":"#/components/schemas/WebhookDeliveryWebhook"}],"nullable":true,"readOnly":true}},"type":"object"},"WebhookDeliverySchema":{"properties":{"end_user_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"http_status":{"nullable":true,"readOnly":true,"type":"integer"},"occurred_at":{"format":"date-time","readOnly":true,"type":"string"},"response_text":{"nullable":true,"readOnly":true,"type":"string"},"response_truncated":{"readOnly":true,"type":"boolean"},"status":{"readOnly":true,"type":"string"},"topic":{"nullable":true,"readOnly":true,"type":"string"},"webhook":{"allOf":[{"$ref":"#/components/schemas/WebhookDeliveryWebhook"}],"nullable":true,"readOnly":true}},"type":"object"},"WebhookDeliveryWebhook":{"properties":{"heron_id":{"readOnly":true,"type":"string"},"url":{"format":"url","readOnly":true,"type":"string"}},"type":"object"},"WebhookSchema":{"properties":{"headers":{"additionalProperties":{},"description":"Headers to send webhook with","example":{"Content-Type":"application/json"},"nullable":true,"type":"object"},"heron_id":{"description":"Unique ID for webhook generated by Heron","example":"wbh_Z2VBmanHWq7gPjhprBo83d","readOnly":true,"type":"string"},"is_enabled":{"description":"Whether the webhook is enabled","example":true,"type":"boolean"},"topic":{"description":"Webhook topic for different Heron events","enum":["data_source.enabled","data_source_account_summary.created","data_source.disabled","end_user.created","end_user.processed","end_user.failed","end_user.reviewed","end_user.transactions_updated","end_user.review_required","end_user.files_changed","end_user.files_classified","end_user_information.updated","end_user.policy_workflow_finished","end_user.policy_workflow_failed","enrich_workflow.finished","transactions.deleted","transactions.updated","pdf.processed","pdf.checks_passed","pdf.checks_failed","pdf.transactions_loaded","pdf.failed","pdf.parsed","pdf.human_reviewing","pdf.approved","integration_link.erroring","iso_application.processed","iso_application.processed_simple","iso_application.created","iso_application.failed","end_user_email.processed","end_user_email.failed","end_user_file.parsed","end_user_file.parse_failed","end_user_file.processed_standalone","end_user_file.deleted","end_user_files.processing_failed","enricher.succeeded","enricher.failed","pricing_template.generation_succeeded","pricing_template.generation_failed","pricing_template.delivery_succeeded","pricing_template.delivery_failed","workflow.event"],"example":"end_user.processed","type":"string"},"url":{"description":"URL where webhook should be sent","example":"https://www.your-webhook-endpoint.com/heron","format":"url","type":"string"}},"required":["topic","url"],"type":"object"},"WebhookUpdateSchema":{"properties":{"headers":{"additionalProperties":{},"description":"Headers to send webhook with","example":{"Content-Type":"application/json"},"nullable":true,"type":"object"},"heron_id":{"description":"Unique ID for webhook generated by Heron","example":"wbh_Z2VBmanHWq7gPjhprBo83d","readOnly":true,"type":"string"},"is_enabled":{"description":"Whether the webhook is enabled","example":true,"type":"boolean"},"topic":{"description":"Webhook topic for different Heron events","enum":["data_source.enabled","data_source_account_summary.created","data_source.disabled","end_user.created","end_user.processed","end_user.failed","end_user.reviewed","end_user.transactions_updated","end_user.review_required","end_user.files_changed","end_user.files_classified","end_user_information.updated","end_user.policy_workflow_finished","end_user.policy_workflow_failed","enrich_workflow.finished","transactions.deleted","transactions.updated","pdf.processed","pdf.checks_passed","pdf.checks_failed","pdf.transactions_loaded","pdf.failed","pdf.parsed","pdf.human_reviewing","pdf.approved","integration_link.erroring","iso_application.processed","iso_application.processed_simple","iso_application.created","iso_application.failed","end_user_email.processed","end_user_email.failed","end_user_file.parsed","end_user_file.parse_failed","end_user_file.processed_standalone","end_user_file.deleted","end_user_files.processing_failed","enricher.succeeded","enricher.failed","pricing_template.generation_succeeded","pricing_template.generation_failed","pricing_template.delivery_succeeded","pricing_template.delivery_failed","workflow.event"],"example":"end_user.processed","type":"string"},"url":{"description":"URL where webhook should be sent","example":"https://www.your-webhook-endpoint.com/heron","format":"url","type":"string"}},"type":"object"},"WebsiteWrite":{"additionalProperties":false,"properties":{"website":{"description":"The address as the source states it.","type":"string"}},"type":"object"},"Widget":{"properties":{"id":{"description":"A unique id used to reference the widget","type":"string"},"scorecard_metric_date_range":{"enum":["latest","last_30_days","last_90_days","last_120_days","last_180_days","last_365_days","next_30_days","next_60_days","next_90_days","next_180_days","last_1_calendar_months","last_3_calendar_months","last_4_calendar_months","last_6_calendar_months","last_12_calendar_months","last_15_calendar_months","last_24_calendar_months","last_1_full_calendar_months","last_2_full_calendar_months","last_3_full_calendar_months","last_6_full_calendar_months","last_12_full_calendar_months","last_60_days","last_45_days","last_2_calendar_months"],"type":"string"},"scorecard_metric_label":{"type":"string"},"type":{"enum":["scorecard_metric","heron_score","loan_revenue_ratio","deposit_trends_ratio"],"type":"string"}},"required":["id","type"],"type":"object"},"WidgetGroup":{"properties":{"group_name":{"type":"string"},"id":{"description":"A unique id used to reference the group","type":"string"},"widgets":{"items":{"$ref":"#/components/schemas/Widget"},"type":"array"}},"required":["group_name","id","widgets"],"type":"object"},"WorkAffiliation":{"properties":{"address":{"description":"Address of the business; null when unavailable.","nullable":true,"type":"string"},"business_name":{"description":"Business the subject is affiliated with.","nullable":true,"type":"string"},"merged_from":{"description":"Every filing behind this affiliation, each as the source reported it, including the one whose values the affiliation shows. A single-filing affiliation lists that one filing, so more than one entry means values were combined.","items":{"$ref":"#/components/schemas/MergedFiling"},"type":"array"},"role":{"description":"Role at the business, such as CEO, DIRECTOR, or Registered Agent.","nullable":true,"type":"string"},"since_date":{"description":"Date the affiliation began; null when unavailable.","format":"date","nullable":true,"type":"string"},"status":{"description":"Source-provided status of the affiliation.","nullable":true,"type":"string"}},"type":"object"},"WorkflowApproveSchema":{"properties":{"approved_by":{"type":"string"},"comment":{"nullable":true,"type":"string"}},"required":["approved_by"],"type":"object"},"WorkflowCopyToDraftSchema":{"properties":{"author_email":{"nullable":true,"type":"string"}},"type":"object"},"WorkflowCreateSchema":{"properties":{"display_config":{"additionalProperties":{},"nullable":true,"type":"object"},"name":{"type":"string"},"set_as_default":{"default":false,"type":"boolean"},"status":{"default":"published","enum":["draft","published"],"type":"string"},"workflow_definition":{"$ref":"#/components/schemas/JSONWorkflowDefinition"}},"required":["name","workflow_definition"],"type":"object"},"WorkflowExecutionSchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"end_user_heron_id":{"nullable":true,"readOnly":true,"type":"string"},"end_user_name":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_silent_run":{"readOnly":true,"type":"boolean"},"single_node_id":{"nullable":true,"readOnly":true,"type":"string"},"started_at":{"format":"date-time","readOnly":true,"type":"string"},"status":{"readOnly":true,"type":"string"},"workflow_version_id":{"readOnly":true,"type":"integer"},"workflow_version_number":{"readOnly":true,"type":"integer"}},"type":"object"},"WorkflowExecutionStatusSchema":{"properties":{"nodes":{"additionalProperties":{"$ref":"#/components/schemas/WorkflowNodeStatus"},"readOnly":true,"type":"object"},"status":{"readOnly":true,"type":"string"}},"type":"object"},"WorkflowNodeStatus":{"properties":{"error":{"additionalProperties":{},"readOnly":true,"type":"object"},"execution_heron_id":{"readOnly":true,"type":"string"},"execution_id":{"readOnly":true,"type":"string"},"finished_time":{"format":"date-time","readOnly":true,"type":"string"},"inputs":{"additionalProperties":{},"readOnly":true,"type":"object"},"node_metadata":{"additionalProperties":{},"readOnly":true,"type":"object"},"result":{"readOnly":true},"scheduled_time":{"format":"date-time","readOnly":true,"type":"string"},"sourced_from_cache_hit":{"readOnly":true,"type":"boolean"},"started_time":{"format":"date-time","readOnly":true,"type":"string"},"status":{"readOnly":true,"type":"string"}},"type":"object"},"WorkflowPublishSchema":{"properties":{"published_by":{"type":"string"}},"required":["published_by"],"type":"object"},"WorkflowSchema":{"properties":{"alerts_muted_until":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"dashboard_trigger_enabled":{"readOnly":true,"type":"boolean"},"dashboard_trigger_label":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_default":{"readOnly":true,"type":"boolean"},"name":{"readOnly":true,"type":"string"},"owners":{"allOf":[{"$ref":"#/components/schemas/FlowmingoWorkflowOwners"}],"readOnly":true},"silent_run_allowed":{"readOnly":true,"type":"boolean"},"user_id":{"readOnly":true,"type":"string"},"user_username":{"nullable":true,"readOnly":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/WorkflowVersionSummary"},"readOnly":true,"type":"array"}},"type":"object"},"WorkflowStartByHeronIdRequestSchema":{"properties":{"end_user_heron_id":{"type":"string"},"trigger_id":{"description":"Trigger node ID on the resolved workflow version.","nullable":true,"type":"string"},"trigger_payload":{"additionalProperties":{},"description":"JSON payload validated against the trigger node schema when present.","type":"object"},"workflow_heron_id":{"type":"string"},"workflow_parameters":{"additionalProperties":{},"default":{},"type":"object"}},"required":["end_user_heron_id","workflow_heron_id"],"type":"object"},"WorkflowStartByNameRequestSchema":{"properties":{"end_user_heron_id":{"type":"string"},"trigger_id":{"description":"Trigger node ID on the resolved workflow version.","nullable":true,"type":"string"},"trigger_payload":{"additionalProperties":{},"description":"JSON payload validated against the trigger node schema when present.","type":"object"},"workflow_name":{"type":"string"},"workflow_parameters":{"additionalProperties":{},"default":{},"type":"object"}},"required":["end_user_heron_id","workflow_name"],"type":"object"},"WorkflowStartRequestSchema":{"properties":{"end_user_heron_id":{"type":"string"},"silent_run":{"default":false,"type":"boolean"},"trigger_id":{"description":"Trigger node ID on the resolved workflow version.","nullable":true,"type":"string"},"trigger_payload":{"additionalProperties":{},"description":"JSON payload validated against the trigger node schema when present.","type":"object"},"workflow_heron_id":{"nullable":true,"type":"string"},"workflow_parameters":{"additionalProperties":{},"default":{},"type":"object"},"workflow_version_number":{"nullable":true,"type":"integer"}},"required":["end_user_heron_id"],"type":"object"},"WorkflowStartResponseSchema":{"properties":{"action":{"readOnly":true,"type":"string"},"status":{"readOnly":true,"type":"string"},"workflow_execution_id":{"readOnly":true,"type":"string"},"workflow_id":{"readOnly":true,"type":"string"}},"type":"object"},"WorkflowSubmitForReviewSchema":{"properties":{"submitted_by":{"type":"string"}},"required":["submitted_by"],"type":"object"},"WorkflowSummarySchema":{"properties":{"created":{"format":"date-time","readOnly":true,"type":"string"},"dashboard_trigger_enabled":{"readOnly":true,"type":"boolean"},"dashboard_trigger_label":{"nullable":true,"readOnly":true,"type":"string"},"heron_id":{"readOnly":true,"type":"string"},"is_default":{"readOnly":true,"type":"boolean"},"latest_version_approved_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"latest_version_approved_by":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_approved_comment":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_author_email":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_change_description":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_last_edited_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"latest_version_last_updated":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"latest_version_number":{"nullable":true,"readOnly":true,"type":"integer"},"latest_version_published_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"latest_version_published_by":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_status":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_submitted_by":{"nullable":true,"readOnly":true,"type":"string"},"latest_version_submitted_for_review_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"name":{"readOnly":true,"type":"string"},"user_id":{"readOnly":true,"type":"integer"},"user_username":{"nullable":true,"readOnly":true,"type":"string"}},"type":"object"},"WorkflowUpdateSchema":{"properties":{"dashboard_trigger_enabled":{"nullable":true,"type":"boolean"},"dashboard_trigger_label":{"nullable":true,"type":"string"},"mute_alerts_for_seconds":{"minimum":0,"nullable":true,"type":"integer"},"name":{"nullable":true,"type":"string"},"set_as_default":{"default":false,"type":"boolean"}},"type":"object"},"WorkflowUpdateVersionSchema":{"properties":{"author_email":{"nullable":true,"type":"string"},"change_description":{"nullable":true,"type":"string"},"display_config":{"additionalProperties":{},"nullable":true,"type":"object"},"workflow_definition":{"allOf":[{"$ref":"#/components/schemas/JSONWorkflowDefinition"}],"nullable":true}},"type":"object"},"WorkflowVersionSchema":{"properties":{"approved_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"approved_by":{"nullable":true,"readOnly":true,"type":"string"},"approved_comment":{"nullable":true,"readOnly":true,"type":"string"},"author_email":{"nullable":true,"readOnly":true,"type":"string"},"change_description":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"display_config":{"additionalProperties":{},"nullable":true,"readOnly":true,"type":"object"},"last_edited_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"published_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"published_by":{"nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["draft","in_review","approved","published"],"readOnly":true,"type":"string"},"submitted_by":{"nullable":true,"readOnly":true,"type":"string"},"submitted_for_review_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"version":{"readOnly":true,"type":"integer"},"workflow_definition":{"allOf":[{"$ref":"#/components/schemas/JSONWorkflowDefinition"}],"readOnly":true}},"type":"object"},"WorkflowVersionSummary":{"properties":{"approved_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"approved_by":{"nullable":true,"readOnly":true,"type":"string"},"approved_comment":{"nullable":true,"readOnly":true,"type":"string"},"author_email":{"nullable":true,"readOnly":true,"type":"string"},"change_description":{"nullable":true,"readOnly":true,"type":"string"},"created":{"format":"date-time","readOnly":true,"type":"string"},"last_edited_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"published_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"published_by":{"nullable":true,"readOnly":true,"type":"string"},"status":{"enum":["draft","in_review","approved","published"],"readOnly":true,"type":"string"},"submitted_by":{"nullable":true,"readOnly":true,"type":"string"},"submitted_for_review_at":{"format":"date-time","nullable":true,"readOnly":true,"type":"string"},"version":{"readOnly":true,"type":"integer"}},"type":"object"},"YodleeAccount":{"properties":{"balance":{"$ref":"#/components/schemas/YodleeAmount"},"classification":{"nullable":true,"type":"string"},"id":{"type":"integer"}},"type":"object"},"YodleeAmount":{"properties":{"amount":{"type":"number"},"currency":{"type":"string"}},"type":"object"},"YodleeSchema":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/YodleeAccount"},"type":"array"},"transactions":{"items":{"$ref":"#/components/schemas/YodleeTransaction"},"type":"array"}},"type":"object"},"YodleeTransaction":{"properties":{"accountId":{"type":"integer"},"amount":{"$ref":"#/components/schemas/YodleeAmount"},"baseType":{"enum":["CREDIT","DEBIT"],"type":"string"},"category":{"type":"string"},"date":{"example":"2025-07-08","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"description":{"$ref":"#/components/schemas/YodleeTransactionDescription"},"id":{"type":"integer"}},"type":"object"},"YodleeTransactionDescription":{"properties":{"original":{"type":"string"},"simple":{"type":"string"}},"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"in":"header","name":"x-api-key","type":"apiKey"},"OAuthBearer":{"scheme":"bearer","type":"http"}}},"externalDocs":{"description":"Read Tutorial","url":"https://docs.herondata.io/"},"info":{"contact":{"email":"support@herondata.io","name":"Support"},"title":"Heron Data API","version":"2021-07-19"},"openapi":"3.0.0","paths":{"/.well-known/oauth-protected-resource/api/hello_world/oauth":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"authorization_servers":{"items":{"type":"string"},"type":"array"},"resource":{"type":"string"},"scopes_supported":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Protected resource metadata"},"503":{"description":"OAuth hello-world is not configured"}},"security":[],"summary":"Discover the OAuth hello-world authorization server","tags":["Testing"],"x-hidden":true}},"/api/admin/clear/report":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearReportRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":true,"properties":{"cache_hit":{"type":"boolean"},"cost":{"type":"number"}},"required":["cost","cache_hit"],"type":"object"}}},"description":"Full CLEAR report"},"422":{"description":"CLEAR cannot sell a report for the record"}},"summary":"Pull a CLEAR report without an end user","tags":["Clear"],"x-hidden":true}},"/api/admin/clear/risk-inform":{"get":{"description":"Returns the Risk Inform result stored for an end user, entity and definition, and with `include=document` the stored response rendered whole as JSON. Reads storage only: Thomson Reuters is never called and nothing is charged.\n","parameters":[{"description":"The end user the result is stored under","in":"query","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"Which CLEAR subject the entity id names","in":"query","name":"subject_type","required":true,"schema":{"enum":["business","person"],"type":"string"}},{"description":"The resolved CLEAR entity that was scored","in":"query","name":"entity_id","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"The Risk Inform definition the result was scored against","in":"query","name":"definition_name","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"The definition version the result was scored against, if one was pinned. A result scored without a pinned version is stored under a different path.","in":"query","name":"definition_version","required":false,"schema":{"minLength":1,"type":"string"}},{"description":"Pass `document` to add the stored response rendered whole as JSON","in":"query","name":"include","required":false,"schema":{"enum":["document"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"cost":{"description":"Always zero, this route cannot charge","type":"number"},"document":{"description":"Present only when `include=document` was passed","properties":{"byte_size":{"description":"Size of the stored XML","type":"integer"},"element_count":{"description":"Elements in the stored XML","type":"integer"},"root":{"additionalProperties":true,"description":"The document, one node per element","type":"object"},"state":{"description":"Whether the stored response could be rendered as JSON","enum":["parsed","unparseable","absent"],"type":"string"}},"required":["state"],"type":"object"},"group_count":{"description":"Entities on the scored page","type":"integer"},"results":{"additionalProperties":true,"description":"The scored entities and the vendor status","type":"object"},"score_state":{"description":"Whether a score is stored. `absent` means nothing is stored for this end user, entity and definition; `unreadable` means a response is stored but no score could be parsed from it.\n","enum":["present","absent","unreadable"],"type":"string"}},"required":["score_state","group_count","results","cost"],"type":"object"}}},"description":"The stored result, and the rendered document when it was asked for."},"404":{"description":"No such end user"}},"summary":"Read a stored Risk Inform result","tags":["Clear"],"x-hidden":true},"post":{"description":"Scores the entity and stores the vendor's response under the end user. Always charges Thomson Reuters: nothing is read from storage first.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearRiskInformRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"cost":{"description":"What this call cost","type":"number"},"group_count":{"description":"Entities on the scored page","type":"integer"},"results":{"additionalProperties":true,"description":"The scored entities and the vendor status","type":"object"},"score_state":{"description":"Whether a score was produced","enum":["present","absent"],"type":"string"}},"required":["score_state","group_count","results","cost"],"type":"object"}}},"description":"The Risk Inform score, threshold and per-flag breakdown."},"404":{"description":"No such end user"}},"summary":"Score a resolved CLEAR entity with Risk Inform","tags":["Clear"],"x-hidden":true}},"/api/admin/clear/risk-inform/raw":{"get":{"description":"Returns the vendor's XML for the stored result, unaltered.","parameters":[{"description":"The end user the result is stored under","in":"query","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"Which CLEAR subject the entity id names","in":"query","name":"subject_type","required":true,"schema":{"enum":["business","person"],"type":"string"}},{"description":"The resolved CLEAR entity that was scored","in":"query","name":"entity_id","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"The Risk Inform definition the result was scored against","in":"query","name":"definition_name","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"The definition version the result was scored against, if one was pinned. A result scored without a pinned version is stored under a different path.","in":"query","name":"definition_version","required":false,"schema":{"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"file_b64":{"description":"The stored XML, base64-encoded","type":"string"},"filename":{"description":"Suggested download filename","type":"string"},"mime_type":{"description":"Media type of the encoded bytes","type":"string"}},"required":["file_b64","mime_type","filename"],"type":"object"}}},"description":"OK"},"404":{"description":"No such end user, or no result stored for that entity and definition"}},"summary":"Download the stored Risk Inform response as XML","tags":["Clear"],"x-hidden":true}},"/api/admin/clear/search":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearSearchRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"group_count":{"type":"integer"},"results":{"additionalProperties":true,"type":"object"}},"required":["group_count","results"],"type":"object"}}},"description":"Full CLEAR search results"}},"summary":"Search CLEAR without an end user","tags":["Clear"],"x-hidden":true}},"/api/admin/courts/search":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourtSearchRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"cases":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"cost":{"type":"number"},"dropped":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"pages_fetched":{"type":"integer"},"query_used":{"type":"string"},"total_count":{"type":"integer"}},"required":["cases","dropped","total_count","pages_fetched","cost","query_used"],"type":"object"}}},"description":"UniCourt cases and search cost"},"422":{"description":"Invalid UniCourt query"},"502":{"description":"UniCourt search failed"}},"summary":"Search UniCourt without an end user","tags":["Courts"],"x-hidden":true}},"/api/admin/fraud_network/edges":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FraudNetworkEdgeSchema"},"type":"array"}}},"description":"Active fraud network edges"}},"summary":"List fraud network edges","tags":["FraudNetwork"],"x-hidden":true},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEdgeCreateSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEdgeSchema"}}},"description":"Fraud network edge created"},"404":{"description":"Fraud network node not found"},"422":{"description":"Invalid fraud network edge"}},"summary":"Create a fraud network edge","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/edges/{heron_id}":{"delete":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Fraud network edge deleted"},"404":{"description":"Fraud network edge not found"}},"summary":"Delete a fraud network edge","tags":["FraudNetwork"],"x-hidden":true},"get":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEdgeSchema"}}},"description":"Fraud network edge"},"404":{"description":"Fraud network edge not found"}},"summary":"Get a fraud network edge","tags":["FraudNetwork"],"x-hidden":true},"patch":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEdgeUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEdgeSchema"}}},"description":"Fraud network edge updated"},"404":{"description":"Fraud network edge or node not found"},"422":{"description":"Invalid fraud network edge update"}},"summary":"Update a fraud network edge","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/edges/{heron_id}/evidence":{"post":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidenceCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidence"}}},"description":"Fraud network evidence created"},"404":{"description":"Fraud network edge or evidence reference not found"},"422":{"description":"Invalid fraud network evidence"}},"summary":"Add evidence to a fraud network edge","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/evidence/{heron_id}/retract":{"post":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidenceRetractionSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidence"}}},"description":"Fraud network evidence retracted"},"404":{"description":"Fraud network evidence not found"},"422":{"description":"Fraud network evidence cannot be retracted"}},"summary":"Retract fraud network evidence","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/networks":{"get":{"responses":{"200":{"description":"Active fraud networks"}},"summary":"List fraud networks","tags":["FraudNetwork"],"x-hidden":true},"post":{"responses":{"201":{"description":"Fraud network created"}},"summary":"Create a fraud network","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/networks/{heron_id}":{"delete":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Fraud network deleted"},"404":{"description":"Fraud network not found"}},"summary":"Delete a fraud network","tags":["FraudNetwork"],"x-hidden":true},"get":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Fraud network detail"},"404":{"description":"Fraud network not found"}},"summary":"Get a fraud network","tags":["FraudNetwork"],"x-hidden":true},"patch":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Fraud network updated"},"404":{"description":"Fraud network not found"}},"summary":"Update a fraud network","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/nodes":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FraudNetworkNodeSchema"},"type":"array"}}},"description":"Active fraud network nodes"}},"summary":"List fraud network nodes","tags":["FraudNetwork"],"x-hidden":true},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeCreateSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeSchema"}}},"description":"Fraud network node created"},"422":{"description":"Invalid fraud network node"}},"summary":"Create a fraud network node","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/nodes/dry_run":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeDryRunRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeDryRunResponseSchema"}}},"description":"Would-be matches for the candidate node"},"422":{"description":"Invalid fraud network node dry run"}},"summary":"Preview matches for a fraud network node","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/nodes/{heron_id}":{"delete":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Fraud network node deleted"},"404":{"description":"Fraud network node not found"}},"summary":"Delete a fraud network node","tags":["FraudNetwork"],"x-hidden":true},"get":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeSchema"}}},"description":"Fraud network node"},"404":{"description":"Fraud network node not found"}},"summary":"Get a fraud network node","tags":["FraudNetwork"],"x-hidden":true},"patch":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeSchema"}}},"description":"Fraud network node updated"},"404":{"description":"Fraud network node not found"},"422":{"description":"Invalid fraud network node update"}},"summary":"Update a fraud network node","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/nodes/{heron_id}/evidence":{"post":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidenceCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkEvidence"}}},"description":"Fraud network evidence created"},"404":{"description":"Fraud network node or evidence reference not found"},"422":{"description":"Invalid fraud network evidence"}},"summary":"Add evidence to a fraud network node","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/fraud_network/nodes/{heron_id}/merge":{"post":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeMergeSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkNodeSchema"}}},"description":"Fraud network nodes merged"},"404":{"description":"Fraud network node not found"},"422":{"description":"Invalid fraud network node merge"}},"summary":"Merge a duplicate fraud network node into a survivor","tags":["FraudNetwork"],"x-hidden":true}},"/api/admin/sos/search":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SosSearchRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"alternatives":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"auto_selected":{"type":"boolean"},"calls_made":{"type":"integer"},"cobalt_status":{"type":"string"},"cost":{"type":"number"},"filing":{"additionalProperties":true,"nullable":true,"type":"object"},"filtered_out":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"requery_performed":{"type":"boolean"},"retry_id":{"nullable":true,"type":"string"}},"required":["filing","alternatives","filtered_out","auto_selected","requery_performed","calls_made","cost","cobalt_status","retry_id"],"type":"object"}}},"description":"Cobalt filing results and search cost"},"422":{"description":"Invalid Secretary of State search"},"502":{"description":"Cobalt search failed"}},"summary":"Search Cobalt Secretary of State filings without an end user","tags":["Secretary of State"],"x-hidden":true}},"/api/analytics/decline":{"get":{"description":"Returns aggregated decline analytics for end users within a date range, including total end users, total declined, and per-check pass/fail/missing counts. Only the latest policy evaluation per end user is considered.\n","parameters":[{"description":"Start of the date range (filters by end_user created date)","in":"query","name":"start_date","required":true,"schema":{"format":"date-time","type":"string"}},{"description":"End of the date range (filters by end_user created date)","in":"query","name":"end_date","required":true,"schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"check_analytics":{"items":{"properties":{"check_name":{"type":"string"},"total_failed":{"type":"integer"},"total_missing_data":{"type":"integer"},"total_passed":{"type":"integer"}},"type":"object"},"type":"array"},"total_declined":{"description":"Number of end users with at least one failed check","type":"integer"},"total_end_users":{"description":"Total number of end users with policy evaluations","type":"integer"}},"type":"object"}}},"description":"Decline analytics retrieved successfully"},"400":{"description":"User does not have analytics configured"},"401":{"description":"Authentication required"},"422":{"description":"Missing required parameters"}},"summary":"Get decline analytics for a user","tags":["Analytics"]}},"/api/app_store/list":{"get":{"description":"List available apps","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppStoreSchema"}}},"description":"OK"}},"summary":"List available apps","tags":["AppStore"]}},"/api/auth/environments":{"get":{"description":"Get all available environments for the current user\n","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailableEnvironments"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get available environments","tags":["Authentication"],"x-hidden":true}},"/api/broker/end_users/summary":{"get":{"description":"Get the broker deal list. Broker customers only; responds 404 for others.","parameters":[{"description":"Filter by name associated with end user","in":"query","name":"name","required":false,"schema":{"example":"your_end_user_name","nullable":true,"type":"string"}},{"description":"Filter by status of end user","in":"query","name":"status","required":false,"schema":{"enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"}},{"description":"Whether the end user is part of a lending portfolio","in":"query","name":"is_portfolio","required":false,"schema":{"example":true,"nullable":true,"type":"boolean"}},{"description":"Order to return broker end users by","in":"query","name":"order_by","required":false,"schema":{"default":"last_updated_desc","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc","latest_activity_desc"],"type":"string"}},{"description":"Unique ID generated by Heron","in":"query","name":"heron_id","required":false,"schema":{"example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"}},{"description":"Filter by ID associated with end_user_id field in transactions","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","explode":true,"in":"query","name":"tags","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Pagination page number (optional). If provided, 'limit' must also be provided.","in":"query","name":"page","required":false,"schema":{"minimum":1,"nullable":true,"type":"integer"}},{"description":"Pagination limit per page (optional). If provided, 'page' must also be provided.","in":"query","name":"limit","required":false,"schema":{"maximum":10000,"minimum":1,"nullable":true,"type":"integer"}},{"description":"Whether the to include data sources for each end user","in":"query","name":"include_data_sources","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include scorecard metrics for each end user (under field criteria)","in":"query","name":"include_scorecard_metrics","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include the tags applied to each end user","in":"query","name":"include_tags","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Only end users whose policy result was this.","in":"query","name":"with_policy_result","required":false,"schema":{"enum":["passed","failed","review_required","missing_data","execution_error",null],"nullable":true}},{"in":"query","name":"with_crm_sync_result","required":false,"schema":{"enum":["success","failure","no_sync_attempted",null],"nullable":true}},{"description":"Filter by whether an active document is pending human review","in":"query","name":"in_human_review","required":false,"schema":{"nullable":true,"type":"boolean"}},{"description":"Whether to include the brokers who submitted each end user","in":"query","name":"include_submitting_brokers","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"in":"query","name":"interval_start","required":false,"schema":{"format":"date-time","nullable":true,"type":"string"}},{"in":"query","name":"interval_end","required":false,"schema":{"format":"date-time","nullable":true,"type":"string"}},{"description":"When true, interval_start and interval_end match end users created or last updated within the window. Bounds are inclusive only when this flag is true.","in":"query","name":"include_updates_in_interval","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"Filter by broker intake classification.","in":"query","name":"broker_classification","required":false,"schema":{"enum":["submission","decision","other",null],"nullable":true}},{"description":"Filter by broker deal stage.","in":"query","name":"deal_stage","required":false,"schema":{"enum":["ready","missing_docs","shopped","offers_in",null],"nullable":true}},{"description":"Filter by broker decision review state.","in":"query","name":"broker_link_status","required":false,"schema":{"enum":["unlinked","linked","dismissed","reclassified",null],"nullable":true}},{"description":"Filter to end users holding a live funder verdict on their own submission lane.","in":"query","name":"holds_decision","required":false,"schema":{"nullable":true,"type":"boolean"}},{"description":"Filter by the funder on the end user's submission lane.","in":"query","name":"funder_heron_id","required":false,"schema":{"nullable":true,"type":"string"}},{"description":"Include funder lane decision counts for submission rows.","in":"query","name":"include_decision_counts","required":false,"schema":{"default":false,"example":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"end_users":{"items":{"$ref":"#/components/schemas/BrokerEndUserSummary"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"Not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List broker EndUsers with deal summary information","tags":["Brokers"]}},"/api/broker/end_users/{end_user_heron_id}/funder_submissions/":{"get":{"description":"One row per funder submission on the deal, newest first, each carrying the funder, outbound status, send eligibility, send attempts, the current (non-superseded) decision, and the full decision history with each decision's offers. The envelope also identifies the requested record's broker link, records linked to it, and submitting broker identities evaluated for funder exclusions. Broker customers only; responds 404 for others.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"Page number","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Page size, default 25, max 50","in":"query","name":"limit","required":false,"schema":{"default":25,"maximum":50,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerLifecyclePage"}}},"description":"One page of funder submissions"},"404":{"description":"End user not found or not a broker customer"}},"security":[{"ApiKeyAuth":[]}],"summary":"List funder submissions with their current decision and offers"}},"/api/broker/end_users/{end_user_heron_id}/funder_submissions/preflight/":{"get":{"description":"Returns validation failures without submitting or changing submission state.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"Include this submission in preflight when explicitly resending it.","in":"query","name":"submission_heron_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunderSubmissionPreflightResultSchema"},"type":"array"}}},"description":"Per-funder validation results"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Validate an end user for configured funders"}},"/api/broker/end_users/{end_user_heron_id}/funder_submissions/submit_to_funders/":{"post":{"description":"Queues eligible submissions and reports each requested submission separately.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSubmitFunderSubmissionsRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BulkSubmitFunderSubmissionResultSchema"},"type":"array"}}},"description":"Per-submission queue outcomes"},"404":{"description":"End user not found"},"422":{"description":"Invalid request"}},"security":[{"ApiKeyAuth":[]}],"summary":"Submit an end user to multiple funders"}},"/api/broker/end_users/{end_user_heron_id}/funder_submissions/{submission_heron_id}/exclusion_resolution/":{"post":{"parameters":[{"in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"submission_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunderExclusionResolutionSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerFunderExclusionRuleSchema"}}},"description":"Resolved funder exclusion rule"},"404":{"description":"Broker customer, end user, or submission not found"},"409":{"description":"Submission is no longer held"}},"security":[{"ApiKeyAuth":[]}],"summary":"Resolve a held funder submission"}},"/api/broker/end_users/{end_user_id_or_heron_id}":{"get":{"description":"Get end-user detail with broker link context. Broker customers only; responds 404 for others.","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"end_user":{"allOf":[{"$ref":"#/components/schemas/EndUser"},{"properties":{"broker_link":{"allOf":[{"$ref":"#/components/schemas/BrokerLink"}],"nullable":true}},"type":"object"}]}},"type":"object"}}},"description":"OK"},"404":{"description":"Not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get broker EndUser detail","tags":["Brokers"]}},"/api/broker/end_users/{end_user_id_or_heron_id}/deal_link/":{"post":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualDealLinkRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerLink"}}},"description":"OK"},"404":{"description":"Not found"},"422":{"description":"Invalid deal link"}},"security":[{"ApiKeyAuth":[]}],"summary":"Link a broker decision record to a deal; its live decisions move onto that deal's submissions","tags":["Brokers"]}},"/api/broker/end_users/{end_user_id_or_heron_id}/deal_link/dismiss":{"post":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerLink"}}},"description":"OK"},"404":{"description":"Not found"},"422":{"description":"Invalid deal link"}},"security":[{"ApiKeyAuth":[]}],"summary":"Dismiss a broker decision from deal-link review","tags":["Brokers"]}},"/api/broker/end_users/{end_user_id_or_heron_id}/deal_link_candidates/":{"get":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DealLinkCandidate"},"type":"array"}}},"description":"OK"},"404":{"description":"Not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List deal-link candidates for a broker decision","tags":["Brokers"]}},"/api/broker_funder_policies/":{"get":{"description":"Get all broker funder policies for the current user, ordered by matching priority","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BrokerFunderPolicy"},"type":"array"}}},"description":"List of broker funder policies"}},"security":[{"ApiKeyAuth":[]}],"summary":"List broker funder policies for current user"},"patch":{"description":"Create or update broker funder policies for the current user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateBrokerFunderPoliciesSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BrokerFunderPolicy"},"type":"array"}}},"description":"Broker funder policies updated successfully"},"404":{"description":"One or more funders not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Bulk update broker funder policies"}},"/api/broker_funder_policies/export/":{"get":{"description":"Download the current user's broker funder policies as an Excel spreadsheet.\nThe exported file can be re-uploaded via POST /broker_funder_policies/upload/ to round-trip policies.\n","responses":{"200":{"content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"format":"binary","type":"string"}}},"description":"Excel file containing funder policies"}},"security":[{"ApiKeyAuth":[]}],"summary":"Export broker funder policies as Excel"}},"/api/broker_funder_policies/funders/":{"post":{"description":"Add a funder to the current broker's funder policies table. Idempotent \u2014 if the funder already exists in the broker's table, returns the existing record without modification. New entries start with empty criteria.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFunderToPoliciesSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderLink"}}},"description":"Funder already exists in policies (no modification)"},"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderLink"}}},"description":"Funder added to policies"},"404":{"description":"Funder not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add a funder to broker's policies"}},"/api/broker_funder_policies/funders/{funder_heron_id}/":{"delete":{"description":"Remove a funder from the current broker's funder policies table. Blocked if the broker-funder pair has active submission integrations (API keys).\n","parameters":[{"description":"The Heron ID of the funder to remove","in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}},"description":"Funder removed from policies"},"404":{"description":"Funder not found or not linked to this broker"},"409":{"description":"Cannot remove funder due to active submission integrations"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove a funder from broker's policies"}},"/api/broker_funder_policies/upload/":{"post":{"description":"Upload a spreadsheet (XLS, XLSX, CSV) or PDF containing funder policies.\nThe file will be parsed asynchronously and policies will be upserted for the current user.\nOnly one upload job can be active at a time per user.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderPolicyUploadSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderPolicyUploadJobSchema"}}},"description":"Upload job created successfully"},"400":{"description":"Invalid file or another job is already in progress"},"409":{"description":"Another upload job is already active"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload funder policy file for parsing"}},"/api/broker_funder_policies/upload/status/":{"get":{"description":"Get the status of the most recent policy upload job for the current user","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderPolicyUploadJobSchema"}}},"description":"Upload job status"},"404":{"description":"No upload job found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get policy upload job status"}},"/api/broker_funder_policies/upload/{job_heron_id}/":{"get":{"description":"Get a specific policy upload job by its Heron ID","parameters":[{"description":"The Heron ID of the upload job","in":"path","name":"job_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFunderPolicyUploadJobSchema"}}},"description":"Upload job details"},"404":{"description":"Upload job not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get specific policy upload job"}},"/api/broker_funder_policies/upload/{job_heron_id}/pending/":{"get":{"description":"Get all pending funder matches that need manual resolution for a specific upload job","parameters":[{"description":"The Heron ID of the upload job","in":"path","name":"job_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PendingMatchSchema"},"type":"array"}}},"description":"List of pending matches"},"404":{"description":"Job not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List pending funder matches for a job"}},"/api/broker_funder_policies/upload/{job_heron_id}/pending/{index}/resolve/":{"post":{"description":"Resolve a pending match by selecting a funder. This will create the broker_funder\nrecord with the policy data and mark the pending match as resolved.\n","parameters":[{"description":"The Heron ID of the upload job","in":"path","name":"job_heron_id","required":true,"schema":{"type":"string"}},{"description":"The index of the pending match to resolve","in":"path","name":"index","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvePendingMatchRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingMatchSchema"}}},"description":"Pending match resolved successfully"},"400":{"description":"Invalid request or match already resolved"},"404":{"description":"Job or pending match not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Resolve a pending funder match"}},"/api/broker_funder_policies/upload/{job_heron_id}/pending/{index}/skip/":{"post":{"description":"Skip a pending match without resolving it. This will mark it as skipped.","parameters":[{"description":"The Heron ID of the upload job","in":"path","name":"job_heron_id","required":true,"schema":{"type":"string"}},{"description":"The index of the pending match to skip","in":"path","name":"index","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingMatchSchema"}}},"description":"Pending match skipped successfully"},"400":{"description":"Match already resolved or skipped"},"404":{"description":"Job or pending match not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Skip a pending funder match"}},"/api/broker_submissions/":{"post":{"description":"Create a new broker submission with end user details.\n**Authentication**: Requires a broker API key in the `x-api-key` header. Generate keys using the `/api/broker_submissions/api_keys/generate` endpoint.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBrokerSubmissionSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"heron_id":{"description":"Heron ID of the created submission","type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create broker submission","tags":["BrokerSubmissions"]}},"/api/broker_submissions/api_keys":{"get":{"description":"Retrieve all Broker API keys associated with the authenticated user's funder account. Returns a list of broker-funder relationships with their corresponding API keys.\n","responses":{"200":{"content":{"application/json":{"schema":{"items":{"properties":{"broker":{"description":"The broker's name","type":"string"},"broker_funder_api_key_heron_id":{"description":"The API key's unique identifier","type":"string"},"broker_funder_api_key_token":{"description":"The API key token","type":"string"}},"type":"object"},"type":"array"}}},"description":"OK"},"404":{"description":"Funder account not found for the authenticated user"}},"summary":"List broker API keys for a given user.","tags":["BrokerSubmissions"]}},"/api/broker_submissions/api_keys/generate":{"post":{"description":"Create a new API key for a broker-funder relationship. The broker is identified by email domain. If the funder account or broker-funder relationship doesn't exist, they will be created automatically. Returns an error if an API key already exists for this relationship.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBrokerFunderApiKeySchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"broker_funder_token":{"description":"The generated API key token","type":"string"}},"type":"object"}}},"description":"OK"},"404":{"description":"Broker with the specified email domain does not exist"},"409":{"description":"API key already exists for this broker-funder relationship"}},"summary":"Generate broker API key","tags":["BrokerSubmissions"]}},"/api/broker_submissions/api_keys/{broker_funder_api_key_heron_id}":{"delete":{"description":"Delete an existing API key for a broker-funder relationship. The authenticated user must own the funder account associated with the API key.\n","parameters":[{"description":"The unique identifier of the API key to delete","in":"path","name":"broker_funder_api_key_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"API key successfully deleted"},"404":{"description":"API key not found"}},"summary":"Delete broker API key","tags":["BrokerSubmissions"]}},"/api/broker_submissions/{submission_heron_id}/files":{"post":{"description":"Upload one or more PDF files for a specified broker submission.\nAuthenticate by passing a broker API key in the `x-api-key` header. Generate keys via the `/api/broker_submissions/api_keys/generate` endpoint.\n","parameters":[{"description":"The unique identifier for the broker submission to upload files to","in":"path","name":"submission_heron_id","required":true,"schema":{"example":"sub_1a2b3c4d5e6f","type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"examples":{"multiple_files":{"summary":"Upload multiple files","value":{"files":["january.pdf","february.pdf","march.pdf"]}},"single_file":{"summary":"Upload single file","value":{"files":["file_q4.pdf"]}},"with_file_class":{"summary":"Upload with explicit file class","value":{"file_class":"iso_application_form","files":["iso_app.pdf"]}},"without_downstream_processing":{"summary":"Upload without triggering downstream processing","value":{"downstream_processing":false,"files":["statement.pdf"]}}},"schema":{"properties":{"downstream_processing":{"default":true,"description":"(Optional) Whether to trigger downstream processing (classification, parsing, Flowmingo workflow start, etc.) after the files are uploaded. Defaults to true to preserve existing behaviour. Set to false to upload files without triggering downstream processing \u2014 useful when uploading multiple files in sequence and you only want the workflow to start after the final upload.\n","example":true,"type":"boolean"},"file_class":{"description":"(Optional) The type of document being uploaded. Applies to all files in this request. If omitted, Heron's file classifier will automatically determine the file type. Common values: bank_statement, iso_application_form, debt_summary, void_check, invoice, pnl_statement, balance_sheet, tax_return.\n","example":"bank_statement","type":"string"},"files":{"description":"Array of PDF files to upload.","items":{"format":"binary","type":"string"},"maxItems":12,"minItems":1,"type":"array"}},"required":["files"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"items":{"properties":{"file":{"description":"Name of the uploaded file","example":"statement_q4.pdf","type":"string"},"status":{"description":"Status of the file upload","enum":["uploaded"],"example":"uploaded","type":"string"}},"type":"object"},"type":"array"}}},"description":"All files uploaded successfully"},"207":{"content":{"application/json":{"schema":{"items":{"properties":{"file":{"description":"Name of the file","example":"statement.pdf","type":"string"},"reason":{"description":"Error reason (only present when status is \"error\")","example":"Duplicate file","type":"string"},"status":{"description":"Status of the file upload","enum":["uploaded","error"],"example":"uploaded","type":"string"}},"type":"object"},"type":"array"}}},"description":"Partial success - some files uploaded, others failed"},"400":{"content":{"application/json":{"schema":{"items":{"properties":{"file":{"description":"Name of the file","example":"invalid.pdf","type":"string"},"reason":{"description":"Reason for failure","example":"File type application/msword not allowed. Allowed: application/pdf","type":"string"},"status":{"description":"Status of the file upload","enum":["error"],"example":"error","type":"string"}},"type":"object"},"type":"array"}}},"description":"All files failed validation or upload, or no files attached"},"401":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"Unauthorized","type":"string"}},"type":"object"}}},"description":"Missing or invalid API key"},"404":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"Broker submission sub_1a2b3c4d5e6f not found","type":"string"}},"type":"object"}}},"description":"Broker submission not found, or does not belong to the authenticated broker"},"422":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"Invalid file_class 'invalid_value'. Must be a valid file class name.","type":"string"}},"type":"object"}}},"description":"Request payload failed validation (e.g. invalid file_class, file too large, wrong mime type, too few or too many files)"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload PDF files for broker submission","tags":["BrokerSubmissions"]}},"/api/broker_submissions/{submission_heron_id}/update_information":{"post":{"description":"Add company and owner details to existing broker submission.\n**Authentication**: Requires a broker API key in the `x-api-key` header. Generate keys using the `/api/broker_submissions/api_keys/generate` endpoint.\n","parameters":[{"in":"path","name":"submission_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserInformationPatchSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserInformationSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add details to broker submission","tags":["BrokerSubmissions"]}},"/api/categories":{"get":{"description":"Get available categories","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/Category"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get categories","tags":["Categories"]}},"/api/company_attributes":{"get":{"description":"Returns the authenticated account's launch catalogue with picker metadata. Admins get the full internal catalogue, for the account given by user_id or else their current account.\n","parameters":[{"description":"Account to inspect. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CompanyAttributeCatalogueSchema"},"type":"array"}}},"description":"Ok"},"404":{"description":"Account or policy access not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List company attributes available for policy checks","tags":["Policy"]}},"/api/credentials/keys":{"get":{"description":"List all API keys for the authenticated user. Returns key metadata including name, token prefix, creation date, and active status. The `last_used` field is the most recent usage timestamp, or null if usage data is not available. Full tokens are never returned - only the first 8 characters where the first 4 are \"key_\".\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/ApiKeyWithLastUsedSchema"},"type":"array"}},"type":"object"}}},"description":"List of API keys"}},"summary":"List API keys","tags":["Credentials"]},"post":{"description":"Create a new named API key for the authenticated user. The full token is returned only in this response - it cannot be retrieved again.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeySchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreatedSchema"}}},"description":"API key created. The full token is only returned in this response."},"400":{"description":"Invalid request"}},"summary":"Create a new API key","tags":["Credentials"]}},"/api/credentials/keys/{heron_id}":{"delete":{"description":"Permanently delete an API key. This cannot be undone. Consider deactivating instead if you might need to rollback.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Key deleted"},"404":{"description":"Key not found"}},"summary":"Delete an API key","tags":["Credentials"]}},"/api/credentials/keys/{heron_id}/activate":{"put":{"description":"Re-activate a previously deactivated API key.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyStatusSchema"}}},"description":"Key activated"},"404":{"description":"Key not found"}},"summary":"Activate an API key","tags":["Credentials"]}},"/api/credentials/keys/{heron_id}/deactivate":{"put":{"description":"Deactivate an API key. The key will stop working immediately but can be re-activated later. Use this instead of deleting to allow rollback.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyStatusSchema"}}},"description":"Key deactivated"},"404":{"description":"Key not found"}},"summary":"Deactivate an API key","tags":["Credentials"]}},"/api/crm_integrations":{"get":{"description":"Get a list of CRM Integrations","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"crm_integrations":{"items":{"$ref":"#/components/schemas/CrmIntegrationSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"List CRM Integrations","tags":["CrmIntegrations"]},"post":{"description":"Create a CRM integration, e.g., with Salesforce","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmIntegrationSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"crm_integration":{"$ref":"#/components/schemas/CrmIntegrationSchema"}},"type":"object"}}},"description":"Created"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a CRM integration","tags":["CrmIntegrations"]}},"/api/crm_integrations/{heron_id}":{"patch":{"description":"patch a CRM integration","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmIntegrationPatchSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrmIntegrationSchema"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Patch a CRM integration","tags":["CrmIntegrations"]}},"/api/data_source_accounts/{dsa_heron_id_to_update}/update_number":{"post":{"description":"Update a data source account's account number\n","parameters":[{"in":"path","name":"dsa_heron_id_to_update","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataSourceAccountUpdateNumberSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDataSourceAccount"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a data source account's account number","tags":["EndUserDataSourceAccounts"]}},"/api/data_source_accounts/{heron_id}":{"put":{"description":"Update a data source account\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDataSourceAccountUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDataSourceAccount"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a data source account","tags":["EndUserDataSourceAccounts"]}},"/api/data_sources/{heron_id}":{"put":{"description":"Update a data source\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDataSourceUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDataSource"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a data source","tags":["EndUserDataSources"]}},"/api/email_templates":{"get":{"description":"Read all available templates","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/EmailTemplateSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get email templates","tags":["EmailTemplates"]},"post":{"description":"Create an email template used to send emails conditional on events like policy evaluation\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"email_template":{"$ref":"#/components/schemas/EmailTemplateSchema"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an email template","tags":["EmailTemplates"]}},"/api/email_templates/{heron_id}":{"patch":{"description":"Update an email template\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplatePatchSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"email_template":{"$ref":"#/components/schemas/EmailTemplatePatchSchema"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Patch an email template","tags":["EmailTemplates"]}},"/api/end_user_emails":{"get":{"description":"Get all emails for all end users associate with this user","parameters":[{"in":"query","name":"page","required":true,"schema":{"minimum":0,"type":"integer"}},{"in":"query","name":"limit","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"properties":{"count":{"type":"number"},"has_more":{"type":"boolean"},"page":{"type":"number"},"total_pages":{"type":"number"}},"type":"object"},"emails":{"items":{"properties":{"email":{"$ref":"#/components/schemas/EndUserEmailSchema"},"end_user_heron_id":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser emails","tags":["EndUsers"]}},"/api/end_user_emails/{heron_id}/export":{"get":{"description":"Export an end user email as an EML file. Attachments are not included.","parameters":[{"description":"The heron_id of the email to export","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"message/rfc822":{"schema":{"format":"binary","type":"string"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Export an end user email as an EML file","tags":["EndUserEmails"]}},"/api/end_user_enrichers/definitions/{enricher_definition_name}/start_enrich":{"post":{"description":"Dispatches an enricher task for an end user and returns immediately.\n","parameters":[{"description":"The name of the enricher definition to execute","example":"industry_prediction","in":"path","name":"enricher_definition_name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"end_user_heron_id":{"description":"The Heron ID of the end user to enrich","example":"eun_abc123","type":"string"}},"required":["end_user_heron_id"],"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartEnrichEndUserResponseSchema"}}},"description":"Enrichment task dispatched successfully"},"400":{"description":"Invalid input"},"404":{"description":"Enricher or end user not found"},"422":{"description":"Unprocessable entity"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start enricher execution for a specific end user asynchronously","tags":["EndUserEnrichers"]}},"/api/end_user_enrichers/fields":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EnricherFieldsSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get all fields for all enrichers for a given user","tags":["EndUserEnrichers"]}},"/api/end_user_enrichers/{end_user_heron_id}/enrich":{"post":{"description":"Executes a specified enricher for an end user and returns the enrichment result.\nThe enrichment result is automatically saved to the database.\n","parameters":[{"description":"The Heron ID of the end user to enrich","example":"eus_abc123","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enricher_name":{"description":"The name of the enricher to execute","example":"industry_prediction","type":"string"}},"required":["enricher_name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnricherResultSchema"}}},"description":"Enricher executed successfully"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger enricher execution for a specific end user","tags":["EndUserEnrichers"]}},"/api/end_user_enrichers/{end_user_heron_id}/enricher_results":{"get":{"description":"Get all latest enrichment results for a given end user by their Heron ID.\n","parameters":[{"in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EnricherResultSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get enrichment results for an end user","tags":["EndUserEnrichers"]}},"/api/end_user_enrichers/{end_user_heron_id}/enricher_results/{enricher_name}":{"get":{"description":"Retrieve the latest result for a specific enricher and end user","parameters":[{"description":"The heron ID of the end user","example":"eus_abc123","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The name of the enricher","example":"industry_prediction","in":"path","name":"enricher_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnricherResultSchema"}}},"description":"Successfully retrieved enricher result"},"404":{"description":"Enricher result not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get enricher result by enricher name and end user","tags":["EndUserEnrichers"]}},"/api/end_user_entities":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NestedEndUserEntitySchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the definitions for all end user entities","tags":["EndUserEntity"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEndUserEntitySchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntitySchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an end user entity","tags":["EndUserEntity"]}},"/api/end_user_entities/attribute_values/export":{"get":{"description":"Export a spreadsheet with saved entity attribute values (API sources only) for all end users under the current user.\n","responses":{"200":{"content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"format":"binary","type":"string"}}},"description":"OK"},"404":{"description":"No end users or API attribute values found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Export all saved attribute for all end users to an Excel file","tags":["EndUserEntity"]}},"/api/end_user_entities/reorder":{"patch":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderEndUserEntitiesSchema"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The order moves a template entity and the entity graph is on"}},"security":[{"ApiKeyAuth":[]}],"summary":"Set the display order of end user entities","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes":{"post":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEndUserEntityAttributeSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeSchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an end user entity attribute","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes/reorder":{"patch":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderEndUserEntityAttributesSchema"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Set the display order of end user entity attributes","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes/{attribute_heron_id}":{"delete":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"success":{"description":"Indicates if the delete operation was successful","type":"boolean"}},"required":["success"],"type":"object"}}},"description":"Successfully deleted the EndUserEntity attribute"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"},"404":{"description":"EndUserEntity attribute not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete an EndUserEntityAttribute","tags":["EndUserEntity"]},"patch":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEndUserEntityAttributeSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeSchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update an end user entity","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes/{attribute_heron_id}/clone":{"post":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneEndUserEntityAttributeSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeSchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an end user entity attribute","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes/{attribute_heron_id}/sources":{"post":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEndUserEntityAttributeSourceSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeSourceSchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an end user entity attribute source","tags":["EndUserEntity"]}},"/api/end_user_entities/{entity_heron_id}/attributes/{attribute_heron_id}/sources/{source_heron_id}":{"delete":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"source_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete an EndUserEntityAttribute","tags":["EndUserEntity"]},"patch":{"parameters":[{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"attribute_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"source_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEndUserEntityAttributeSourceSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeSourceSchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upsert an end user entity","tags":["EndUserEntity"]}},"/api/end_user_entities/{heron_id}":{"delete":{"parameters":[{"description":"The Integration's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete an EndUserEntity","tags":["EndUserEntity"]},"patch":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEndUserEntitySchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntitySchema"}}},"description":"OK"},"400":{"description":"The entity is a template entity and the entity graph is on, so its shape cannot change"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update an end user entity","tags":["EndUserEntity"]}},"/api/end_user_files":{"get":{"description":"Get all files uploaded to Heron by your users, not including parsed results from files","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserFileSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"All EndUserFiles","tags":["EndUserFiles"]}},"/api/end_user_files/file_classes":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FileClassSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get all file classes","tags":["FileClass"]}},"/api/end_user_files/process_standalone":{"post":{"description":"Process a file for classification and parsing without storing it as an EndUserFile. Results are delivered via webhook to subscribed endpoints.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandaloneProcessFileSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"reference_id":{"description":"The reference ID provided in the request","type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Process file without creating EndUserFile record","tags":["EndUserFiles"]}},"/api/end_user_files/recent_by_file_class":{"get":{"description":"Retrieve the most recent files for the specified file class.","parameters":[{"description":"The file class to filter by.","in":"query","name":"file_class","required":true,"schema":{"type":"string"}},{"description":"The maximum number of files to return, defaults to 20","in":"query","name":"limit","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserFileSchema"},"type":"array"}}},"description":"A list of recent files."}},"security":[{"ApiKeyAuth":[]}],"summary":"Get recent files by file class","tags":["EndUserFiles"]}},"/api/end_user_files/rename_rules":{"get":{"description":"Retrieve all file rename rules for the current user.","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GetFileRenameRulesSchema"},"type":"array"}}},"description":"A list of file rename rules"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get file rename rules","tags":["EndUserFiles"]},"post":{"description":"Add a new rename rule for files.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFileRenameRuleSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFileRenameRulesSchema"}}},"description":"The created file rename rule"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a file rename rule","tags":["EndUserFiles"]}},"/api/end_user_files/rename_rules/slugs":{"get":{"description":"Retrieve all file rename rules slugs for the current user.","responses":{"200":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"description":"A list of file rename rule slugs"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get file rename rule variable slugs","tags":["EndUserFiles"]}},"/api/end_user_files/rename_rules/{heron_id}":{"patch":{"description":"Update an existing rename rule identified by its `heron_id`.","parameters":[{"description":"The unique identifier of the rename rule.","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFileRenameRuleSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFileRenameRulesSchema"}}},"description":"The updated file rename rule"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a file rename rule","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}":{"delete":{"parameters":[{"description":"The Heron ID of the end user file to delete","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"403":{"description":"Unauthorized to delete this end user file"},"404":{"description":"End user file not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete an EndUserFile","tags":["EndUserFiles"]},"get":{"description":"Retrieve a single end user file by its Heron ID. Returns file metadata including filename, file class, parsed results (if any), and related info. Use this endpoint when you have an end user file Heron ID and need its details without listing or filtering all files.\n","parameters":[{"description":"The Heron ID of the end user file (e.g. euf_...)","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"The end user file"},"404":{"description":"End user file not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a single end user file by Heron ID","tags":["EndUserFiles"]},"patch":{"description":"Use this endpoint to change the end user file's class. The file will be reprocessed as the new type.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update the end user file's class","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}/file":{"get":{"description":"Get the base64 string representation of an end user file","parameters":[{"description":"The heron_id of the end user file","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileBase64Schema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUserFile as a base64 string","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}/parse_file":{"post":{"parameters":[{"description":"The file's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseFileSchema"}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger async parsing of an end user file","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}/parsed_results":{"get":{"parameters":[{"description":"The file's heron_id - beginning with 'euf_'","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"parser_id","required":false,"schema":{"nullable":true,"type":"string"}},{"in":"query","name":"version_number","required":false,"schema":{"nullable":true,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ParsedEndUserFileSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get parsed results from uploaded files","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}/trigger_rename":{"post":{"parameters":[{"description":"The file's heron_id - starting with euf_","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger file's rename rule","tags":["EndUserFiles"]}},"/api/end_user_files/{heron_id}/trigger_split":{"post":{"parameters":[{"description":"The file's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserFileSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger splitting a combined end user file into its child files based on its page_classes","tags":["EndUserFiles"]}},"/api/end_user_files/{parsed_end_user_file_id}/parsed_results":{"patch":{"parameters":[{"description":"The ID of the parsed end user file","in":"path","name":"parsed_end_user_file_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"parsed_result":{"additionalProperties":true,"type":"object"}}}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParsedEndUserFileSchema"}}},"description":"OK"},"404":{"description":"Parsed end user file not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update Parsed Results","tags":["EndUserFiles"]}},"/api/end_user_queries/execute":{"post":{"description":"Execute saved SQL queries by name for a specific end user and return results\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"end_user_heron_id":{"description":"Heron ID of the end user","example":"eu_abc123","type":"string"},"query_names":{"description":"List of saved query names to execute","example":["monthly_revenue","top_transactions"],"items":{"type":"string"},"type":"array"}},"required":["query_names","end_user_heron_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"items":{"type":"object"},"type":"array"},"example":{"results":{"monthly_revenue":{"column_order":["month","revenue"],"records":[{"month":"2024-01","revenue":50000}]},"top_transactions":{"column_order":["id","amount"],"records":[{"amount":1000,"id":1}]}}},"type":"object"}}},"description":"Successfully executed queries"}},"security":[{"ApiKeyAuth":[]}],"summary":"Execute saved queries","tags":["EndUserQueries"],"x-hidden":true}},"/api/end_users":{"get":{"description":"Get a list of EndUsers","parameters":[{"description":"Filter by name associated with end user","in":"query","name":"name","required":false,"schema":{"example":"your_end_user_name","nullable":true,"type":"string"}},{"description":"Filter by status of end user","in":"query","name":"status","required":false,"schema":{"enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"}},{"description":"Whether the end user is part of a lending portfolio","in":"query","name":"is_portfolio","required":false,"schema":{"example":true,"nullable":true,"type":"boolean"}},{"description":"Return only end users created at or after this ISO 8601 date or datetime","in":"query","name":"created_after","required":false,"schema":{"example":"2026-09-11","nullable":true,"type":"string"}},{"description":"Return only end users created strictly before this ISO 8601 date or datetime","in":"query","name":"created_before","required":false,"schema":{"example":"2026-09-18","nullable":true,"type":"string"}},{"description":"Return only end users last updated at or after this ISO 8601 date or datetime","in":"query","name":"last_updated_after","required":false,"schema":{"example":"2026-09-11","nullable":true,"type":"string"}},{"description":"Return only end users last updated strictly before this ISO 8601 date or datetime","in":"query","name":"last_updated_before","required":false,"schema":{"example":"2026-09-18","nullable":true,"type":"string"}},{"description":"Order to return end users by","in":"query","name":"order_by","required":false,"schema":{"default":"last_updated_desc","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc",null],"nullable":true,"type":"string"}},{"description":"Unique ID generated by Heron","in":"query","name":"heron_id","required":false,"schema":{"example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"}},{"description":"Filter by ID associated with end_user_id field in transactions","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","explode":true,"in":"query","name":"tags","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Pagination page number","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Pagination limit per page","in":"query","name":"limit","required":false,"schema":{"default":1000,"maximum":10000,"minimum":1,"type":"integer"}},{"description":"Whether the to include data sources for each end user","in":"query","name":"include_data_sources","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include scorecard metrics for each end user (under field criteria)","in":"query","name":"include_scorecard_metrics","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include the tags applied to each end user","in":"query","name":"include_tags","required":false,"schema":{"default":false,"example":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"end_users":{"items":{"$ref":"#/components/schemas/EndUser"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"List EndUsers","tags":["EndUsers"]},"post":{"description":"Create a new end user. If transactions have previously been sent for this `end_user_id`, use `PUT end_users` to update instead.\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUserPostParams"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUser"}},"type":"object"}}},"description":"OK"},"422":{"description":"A tag is unknown or outside the member's access scope"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create EndUser","tags":["EndUsers"]},"put":{"callbacks":{"onData":{"$yourWebhookUrl":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserWebhookPayload"}}},"description":"Webhook payload with end_user"},"responses":{"200":{"description":"Your webhook implementation should return this HTTP status code\nif the data was received successfully."}}}}}},"description":"Confirm an end user is ready for async processing by sending a status of \"ready\". The `end_user_id` must have previously been sent with at least one Transaction if attempting to update the status.\n","externalDocs":{"description":"Webhook Tutorial","url":"https://docs.herondata.io/webhooks"},"requestBody":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUser"}},"type":"object"}}},"description":"Dictionary representing an EndUser","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUser"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update EndUser","tags":["EndUsers"]}},"/api/end_users/background_check/verification/coverage":{"get":{"deprecated":true,"description":"Deprecated \u2014 use `GET /end_users/verification/coverage` instead.\nGet, for every field the verification response carries, the sources that could check it, best authority first. A constant rather than a fact about one submission: it says what the product can verify at all, which is why it takes no end user.\nA channel the submission stated through is never one of them. The form, the customer's own rows and the broker's submission are the claim under check, so they appear on a field's card with their value and nowhere here. An empty list means no run can ever verify that field.\n","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageResponseSchema"}}},"description":"OK"},"404":{"description":"Verification is not enabled for this account"}},"security":[{"ApiKeyAuth":[]}],"summary":"Which sources could check each verification field","tags":["EndUsers"],"x-hidden":true}},"/api/end_users/balance":{"get":{"description":"Get balance for given EndUser on a daily and account granularity","parameters":[{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_heron_id","required":false,"schema":{"example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"}},{"description":"ISO 4217 currency code to convert to","in":"query","name":"to_currency","required":false,"schema":{"enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"}},{"description":"Deprecated (use date_min instead). Filter for transactions with timestamp after the input value","in":"query","name":"timestamp_min","required":false,"schema":{"example":"2026-10-06T22:12:43.426737","format":"date-time","nullable":true,"type":"string"}},{"description":"Filter for transactions with timestamp after the input value (inclusive). It has precedence over timestamp_min","in":"query","name":"date_min","required":false,"schema":{"example":"2026-10-06","format":"date","nullable":true,"type":"string"}},{"description":"Deprecated (use date_max instead). Filter for transactions with timestamp earlier than the input value","in":"query","name":"timestamp_max","required":false,"schema":{"example":"2026-10-05T22:12:43.426938","format":"date-time","nullable":true,"type":"string"}},{"description":"Filter for transactions with date earlier than the input value (inclusive). It has precedence over timestamp_max","in":"query","name":"date_max","required":false,"schema":{"example":"2026-10-05","format":"date","nullable":true,"type":"string"}},{"description":"If true, forecasts the balances of each account","in":"query","name":"include_forecast","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"Filter by specific account reference IDs","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"default":[],"example":["1234","5678"],"items":{"type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserBalanceOutputSchema"}}},"description":"OK. Empty balances include a warning reason when no balance data is available."},"404":{"description":"EndUser not found or inaccessible"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser balance","tags":["EndUserCalculations"]}},"/api/end_users/forecast":{"get":{"description":"Get forecast amounts for a given EndUser and category","parameters":[{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_heron_id","required":false,"schema":{"example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"}},{"description":"ISO 4217 currency code to convert to","in":"query","name":"to_currency","required":false,"schema":{"enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"}},{"description":"Aggregate results over time, i.e., aggregate by week or by month","in":"query","name":"date_granularity","required":false,"schema":{"default":"month","enum":["week","month"],"example":"month","type":"string"}},{"description":"Heron ID of category to be forecasted; either category_heron_id or category_label must be present","in":"query","name":"category_heron_id","required":false,"schema":{"example":"ctg_6d8eAhqjGvc8kTZi7p2hfE","type":"string"}},{"description":"Label of category to be forecasted; either category_heron_id or category_label must be present","in":"query","name":"category_label","required":false,"schema":{"example":"Revenue","type":"string"}},{"description":"The earliest transaction timestamp date to use in forecasting","in":"query","name":"from_date","required":false,"schema":{"example":"2022-01-01","format":"date","nullable":true,"type":"string"}},{"description":"The latest transaction timestamp date to use in forecasting","in":"query","name":"to_date","required":false,"schema":{"example":"2022-01-31","format":"date","nullable":true,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserForecastOutputSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser forecasts","tags":["EndUserCalculations"]}},"/api/end_users/statistics":{"get":{"description":"Get summarized statistics for a given EndUser","parameters":[{"description":"end_user_id for statistics; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Heron-generated id for end user; either end_user_id or end_user_heron_id is required","in":"query","name":"end_user_heron_id","required":false,"schema":{"example":"eus_NSGC3k4wmwLm368n7oB868","nullable":true,"type":"string"}},{"description":"ISO 4217 currency code to convert to","in":"query","name":"to_currency","required":false,"schema":{"enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"}},{"description":"Filter for transactions with timestamp after the input value (as date)","in":"query","name":"from_date","required":false,"schema":{"example":"2026-10-06","format":"date","nullable":true,"type":"string"}},{"description":"Filter for transactions with timestamp before the input value (as date)","in":"query","name":"to_date","required":false,"schema":{"example":"2026-10-05","format":"date","nullable":true,"type":"string"}},{"description":"Aggregate results over time, e.g., by week or by quarter","in":"query","name":"date_granularity","required":false,"schema":{"default":"month","enum":["day","week","month","quarter","year"],"example":"month","type":"string"}},{"description":"Pivot results by merchant or by category","in":"query","name":"group_by","required":false,"schema":{"default":"category","enum":["category","merchant"],"example":"category","type":"string"}},{"description":"Filter by specific categories","explode":true,"in":"query","name":"category_heron_ids","required":false,"schema":{"default":[],"example":["ctg_QVcasN4jVfEev5ze2jEorM","ctg_2hUVn2tvUtWXbCnQpct4cX"],"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by specific merchants","explode":true,"in":"query","name":"merchant_heron_ids","required":false,"schema":{"default":[],"example":["mrc_9p7irgocSX7rmykPQDp8VY","mrc_XqLvRrVfUFevHQPUSA9HB7"],"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by specific account reference IDs","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"default":[],"example":["1234","5678"],"items":{"type":"string"},"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"statistics":{"items":{"$ref":"#/components/schemas/EndUserStatsOutputSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser statistics","tags":["EndUserCalculations"]}},"/api/end_users/summary":{"get":{"description":"Get a list of EndUsers","parameters":[{"description":"Filter by name associated with end user","in":"query","name":"name","required":false,"schema":{"example":"your_end_user_name","nullable":true,"type":"string"}},{"description":"Filter by status of end user","in":"query","name":"status","required":false,"schema":{"enum":["new","ready","processed","reviewed","review_requested","failed",null],"example":"reviewed","nullable":true,"type":"string"}},{"description":"Whether the end user is part of a lending portfolio","in":"query","name":"is_portfolio","required":false,"schema":{"example":true,"nullable":true,"type":"boolean"}},{"description":"Order to return end users by","in":"query","name":"order_by","required":false,"schema":{"default":"last_updated_desc","enum":["last_updated_desc","last_updated_asc","created_desc","created_asc",null],"nullable":true,"type":"string"}},{"description":"Unique ID generated by Heron","in":"query","name":"heron_id","required":false,"schema":{"example":"eus_ahR4C2gVUWkzFrvBXqwiT2","nullable":true,"type":"string"}},{"description":"Filter by ID associated with end_user_id field in transactions","in":"query","name":"end_user_id","required":false,"schema":{"example":"your_end_user_id","nullable":true,"type":"string"}},{"description":"Filter by tag Heron IDs. End users holding any active requested tag are returned. Unknown and soft-deleted tag IDs do not match any end users.","explode":true,"in":"query","name":"tags","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Pagination page number (optional). If provided, 'limit' must also be provided.","in":"query","name":"page","required":false,"schema":{"minimum":1,"nullable":true,"type":"integer"}},{"description":"Pagination limit per page (optional). If provided, 'page' must also be provided.","in":"query","name":"limit","required":false,"schema":{"maximum":10000,"minimum":1,"nullable":true,"type":"integer"}},{"description":"Whether the to include data sources for each end user","in":"query","name":"include_data_sources","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include scorecard metrics for each end user (under field criteria)","in":"query","name":"include_scorecard_metrics","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Whether to include the tags applied to each end user","in":"query","name":"include_tags","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"description":"Only end users whose policy result was this.","in":"query","name":"with_policy_result","required":false,"schema":{"enum":["passed","failed","review_required","missing_data","execution_error",null],"nullable":true}},{"in":"query","name":"with_crm_sync_result","required":false,"schema":{"enum":["success","failure","no_sync_attempted",null],"nullable":true}},{"description":"Filter by whether an active document is pending human review","in":"query","name":"in_human_review","required":false,"schema":{"nullable":true,"type":"boolean"}},{"description":"Whether to include the brokers who submitted each end user","in":"query","name":"include_submitting_brokers","required":false,"schema":{"default":false,"example":true,"type":"boolean"}},{"in":"query","name":"interval_start","required":false,"schema":{"format":"date-time","nullable":true,"type":"string"}},{"in":"query","name":"interval_end","required":false,"schema":{"format":"date-time","nullable":true,"type":"string"}},{"description":"When true, interval_start and interval_end match end users created or last updated within the window. Bounds are inclusive only when this flag is true.","in":"query","name":"include_updates_in_interval","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"allOf":[{"$ref":"#/components/schemas/Pagination"}],"description":"Pagination metadata. Present only if pagination parameters ('page' and 'limit') are provided in the request."},"end_users":{"items":{"$ref":"#/components/schemas/EndUserSummary"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"List EndUsers with Summary Information","tags":["EndUsers"]}},"/api/end_users/verification/coverage":{"get":{"description":"Get, for every field the verification response carries, the sources that could check it, best authority first. A constant rather than a fact about one submission: it says what the product can verify at all, which is why it takes no end user.\nA channel the submission stated through is never one of them. The form, the customer's own rows and the broker's submission are the claim under check, so they appear on a field's card with their value and nowhere here. An empty list means no run can ever verify that field.\n","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageResponseSchema"}}},"description":"OK"},"404":{"description":"Verification is not enabled for this account"}},"security":[{"ApiKeyAuth":[]}],"summary":"Which sources could check each verification field","tags":["EndUsers"],"x-hidden":true}},"/api/end_users/{end_user_heron_id}/background_check":{"get":{"description":"Get the background check results for an end user, including the screening run status, each subject's identity matches and records, and the outcome of each policy check.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"If true, each record additionally carries its full vendor detail under `detail`","in":"query","name":"include_section_detail","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"If true, each subject's search trail is taken from that subject's most recent run that used an automatic identity search, ignoring runs where the subject was manually pinned. Records and policy outcomes are unaffected.\n","in":"query","name":"exclude_manual","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckResponseSchema"}}},"description":"OK"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser background check dashboard payload","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/affiliations":{"get":{"description":"Lists every business and person the deal's background check connects it to: the businesses each owner is recorded as affiliated with, the businesses filed under each owner (corporate filings), the people associated with them, and the people and companies named as officers on the business's own filings. Each row carries the state of any report requested for it - shared across rows naming the same business - and is absent until a background check has completed.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckAffiliationsViewSchema"}}},"description":"OK"},"404":{"description":"End user not found, or affiliations are not enabled for this account"}},"security":[{"ApiKeyAuth":[]}],"summary":"List an end user's background check affiliations","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/affiliations/reports":{"post":{"description":"Requests a background check report for each affiliation selected, business or person. Where the source records already identify the party, its report is retrieved for that party directly; otherwise a search runs first, and a search that settles on no single party returns `not_found` along with the parties it did find, so one can be confirmed. Poll the affiliations endpoint for progress.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckAffiliateReportRequestSchema"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckAffiliateRequestAcceptedSchema"}}},"description":"Report requests accepted"},"404":{"description":"End user not found, or affiliations are not enabled for this account"},"409":{"description":"The affiliation list has changed, this affiliation cannot have a report requested for it, or no completed background check exists"}},"security":[{"ApiKeyAuth":[]}],"summary":"Request background check reports for affiliations","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/affiliations/reports/confirm":{"post":{"description":"Chooses which of the parties a search found the affiliation's report should cover, either when the search settled on none of them or to correct an earlier choice. Only a party that affiliation's own search identified can be chosen. Its report is retrieved in the background, replacing any report already held for that affiliation; poll the affiliations endpoint for progress.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckAffiliateConfirmSchema"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckAffiliationReportState"}}},"description":"Report pull accepted"},"404":{"description":"End user not found, or affiliations are not enabled for this account"},"409":{"description":"No report has been requested for this affiliation, or no report can be ordered for the chosen party - it is not one this affiliation's search identified"}},"security":[{"ApiKeyAuth":[]}],"summary":"Confirm a candidate for an affiliate report","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/affiliations/reports/{ref}":{"delete":{"description":"Removes an affiliate report request, so later screening runs no longer pull a report for that affiliation. Reports already pulled remain on the runs that produced them.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The affiliate report request reference returned when it was requested","in":"path","name":"ref","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Request removed"},"404":{"description":"End user not found, or affiliations are not enabled for this account"},"409":{"description":"The affiliate report request does not exist"}},"security":[{"ApiKeyAuth":[]}],"summary":"Stop tracking an affiliate report","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/override":{"delete":{"description":"Clears every subject's CLEAR candidate pin so the enricher runs its full search waterfall for all subjects on the next run.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Overrides cleared"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Clear all CLEAR candidate overrides for a background check","tags":["EndUsers"]},"get":{"description":"Returns the per-subject CLEAR entity_id pins the background-check enricher fetches reports for directly, skipping its search. An empty value means that subject still runs the full search waterfall.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckCandidateOverrideSchema"}}},"description":"OK"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the pinned CLEAR candidate overrides for a background check","tags":["EndUsers"]},"post":{"description":"Pins a CLEAR entity_id per subject (owner_1, owner_2, business) so the enricher fetches that candidate's report directly and skips its search. A null value clears that subject's pin; unpinned subjects still run the full search waterfall. Returns the current pins.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckCandidateOverrideSchema"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckCandidateOverrideSchema"}}},"description":"OK"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Pin CLEAR candidate overrides for a background check","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/pdf":{"get":{"description":"One PDF for the whole deal - a contents index, the outcome, every policy check, and each subject's findings. Renders the same data the background check page shows, and returns the file itself rather than a JSON envelope, so a client can save the response directly.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/pdf":{"schema":{"format":"binary","type":"string"}}},"description":"The rendered PDF, as an attachment."},"404":{"description":"End user not found, or no background check has been run for the deal"},"409":{"description":"The deal's background check is still running, or did not succeed"}},"security":[{"ApiKeyAuth":[]}],"summary":"Download the background check as a PDF","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/subjects/{subject_key}/raw_report":{"get":{"description":"Returns the requested subject's background check as machine-readable XML, base64-encoded in a JSON payload.\n\nThe document is rooted at `<background_check>` carrying `end_user_id`, `end_user_name`, `status`, `subject_key` and a UTC `generated_at`. Under it: `<outcome>` with the deal's result, severity and check counts; `<policy_checks count=\"n\">` of `<check>`; and `<subjects>` holding the one requested `<subject>`. Within the subject, `<application>` is the identity that was searched, and each exported section is an element named for its key (`criminal`, `liens`, `ofac`, ...) carrying `count` and one `<record>` per row. A section's list fields are siblings of those elements rather than nested in them, in the same `count`/`<record>` shape \u2014 `phones`, `addresses`, `emails`, `business_profile_details`, `business_contacts` and `work_affiliations` \u2014 so `profile` itself has no element, only its lists.\n\nElement and field names are those of `BackgroundCheckResponseSchema`, which is the data dictionary for their meaning. Values are machine-typed rather than display-formatted: a boolean is `true`/`false`, a list is a repeated element, an amount is a bare decimal, and an absent field is omitted rather than empty so a consumer can test for presence. The deal's outcome and policy checks are repeated in every subject's file, so each file stands on its own.\n\nA check's `id` is `<scope>:<signal>`, and the scope is what the check covers rather than necessarily this subject: `owner_1`, `owner_2` and `business` each name one subject, `any_owner` is the worst outcome across the owners, and `submission` is computed over the whole deal. So a subject's file carries checks about the other subjects too, and a failing `any_owner` or `submission` check should not be attributed to the subject whose file it arrived in.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The background check subject to export","in":"path","name":"subject_key","required":true,"schema":{"enum":["owner_1","owner_2","business"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackgroundCheckRawReportSchema"}}},"description":"OK"},"404":{"description":"End user not found, or the deal has no completed check for that subject"}},"security":[{"ApiKeyAuth":[]}],"summary":"Download a subject's background check as XML","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/subjects/{subject_key}/records/{record_id}/mugshot":{"get":{"description":"Returns the mug shot for one criminal or arrest record as authenticated image bytes.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The background check subject whose record should be viewed","in":"path","name":"subject_key","required":true,"schema":{"enum":["owner_1","owner_2","business"],"type":"string"}},{"description":"Stable reference of the criminal or arrest record","in":"path","name":"record_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"image/jpeg":{"schema":{"format":"binary","type":"string"}},"image/png":{"schema":{"format":"binary","type":"string"}}},"description":"Mug shot image"},"404":{"description":"End user, record, or mug shot not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"View a criminal-record mug shot","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/background_check/verification":{"get":{"deprecated":true,"description":"Deprecated \u2014 use `GET /end_users/{end_user_heron_id}/verification` instead.\n\nReturns a field-by-field verification of a submission's subjects \u2014 the business and its\nowners \u2014 against every independent source that ran a KYB check for the submission.\n\nFor each field, the response gives a `state`, the independent sources consulted, and the\nvalue each returned. States are:\n\n- `verified` \u2014 the merchant stated this value and an independent source agrees\n- `conflict` \u2014 the merchant stated this value and an independent source disagrees\n- `not_verified` \u2014 no independent source confirmed it\n- `blank` \u2014 no value was provided on the submission\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResponseSchema"}}},"description":"OK"},"404":{"description":"End user not found, or verification is not enabled for this account"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get an end user's background check verification","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/company_attributes":{"get":{"description":"Get calculated attribute values for a given end user","parameters":[{"in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CompanyAttributeValueSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser attribute values","tags":["EndUserAttributes"]}},"/api/end_users/{end_user_heron_id}/deal_link/":{"get":{"description":"List all end users linked to the same CRM opportunity as this end user \u2014 the original submission end user plus one end user per funder decision email.","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DealLinkEntry"},"type":"array"}}},"description":"List of deal link entries"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get deal link entries for an end user"}},"/api/end_users/{end_user_heron_id}/details":{"get":{"description":"Returns the business being underwritten, the owners an application form declared, the other people and companies the sources linked to them, and the public records about any of them. Every field has one value, and `_sources` names the source of each value.\n\n`custom_entities` holds the fields your account defines in addition to the standard ones, in the same one-value-per-field shape.\n\nWhen sources give different values for one field, the response shows the value from the highest-ranked source. Values your account states about the deal rank first. The other values are not included.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDetailsResponseSchema"}}},"description":"OK"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the company and owner details of an end user","tags":["EndUsers"]},"patch":{"description":"Send `heron_id`, the `hen_` ID that `GET` returns on every entity, to update that entity. Leave it out to add a new owner, address or phone, and the response returns its `heron_id`. A deal has one business, so once it has one, `business` must send its `heron_id`. Owners sent without `business` link to it.\n\nSend only the fields that change. A field you leave out keeps its current value.\n\n`null` clears the value this account stated, and a list replaces this account's earlier list, so `[]` clears it. Another source's value still shows.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailsWriteSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserDetailsResponseSchema"}}},"description":"OK"},"400":{"description":"The details stated do not fit this submission"},"403":{"description":"Editing company details is not enabled for this account"},"404":{"description":"End user not found"},"422":{"description":"A body this schema cannot read, such as a key it does not name"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update the company and owner details of an end user","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/duplicate_end_users":{"get":{"description":"Find duplicate end users for the given end user by matching on EIN (federal_tax_id) or normalized legal business name. Only returns duplicates within the same user (lender). Matching strategy: (1) Priority - Match by EIN when available (fast indexed query), (2) Fallback - Match by normalized company_legal_business_name when EIN is missing. Requires the count_duplicate_end_users feature flag to be enabled for the user.\n","parameters":[{"description":"The Heron ID of the end user to check for duplicates","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DuplicateEndUsersResponse"}}},"description":"List of duplicate end users found"},"403":{"description":"Feature not enabled for this user"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get duplicate end users for an end user","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/entities":{"get":{"parameters":[{"in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MaterialisedEndUserEntitySchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the materialised end user entities for an end user","tags":["EndUserEntity"]}},"/api/end_users/{end_user_heron_id}/entities/values/bulk":{"put":{"description":"Save multiple entity attribute values in a single request.\nEach item specifies the entity name, attribute name, and value to set.\nIf an API source doesn't exist for an attribute, one will be created.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkSaveEntityAttributeValuesSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BulkSaveEntityAttributeValueResultSchema"},"type":"array"}}},"description":"Results for each item in the bulk request"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Bulk save entity attribute values by entity name and attribute name","tags":["EndUserEntity"]}},"/api/end_users/{end_user_heron_id}/entities/{entity_heron_id}":{"post":{"parameters":[{"in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"entity_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertEndUserEntityAttributeValueSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserEntityAttributeValueSchema"}}},"description":"OK"},"204":{"description":"No Content (value was deleted)"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upsert the attribute value for an end user entity attribute source","tags":["EndUserEntity"]}},"/api/end_users/{end_user_heron_id}/fraud_detection/fraud_network":{"get":{"description":"Returns the last fraud network scan for a submission: whether the identity it stated matches a\nbusiness Heron's consortium has reported or detected, and what the match is.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FraudNetworkScanResultSchema"}}},"description":"OK"},"403":{"description":"Fraud detection is not enabled for this account"},"404":{"description":"End user not found, or no scan has run for this end user"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get an end user's fraud network scan","tags":["EndUsers"]}},"/api/end_users/{end_user_heron_id}/funder_policy_evaluations/":{"get":{"description":"Get all funder policy evaluations for a specific end user","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunderPolicyEvaluation"},"type":"array"}}},"description":"List of funder policy evaluations"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List funder policy evaluations for an end user"}},"/api/end_users/{end_user_heron_id}/funder_submissions/{submission_heron_id}/submit_to_funder/":{"post":{"description":"Triggers an async submission for a specific funder submission. Returns 202 immediately; poll the submission status to check progress. Set resend=true with use_sandbox=false to submit a previously sent or declined lane with a successful production attempt again.\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The Heron ID of the funder submission","in":"path","name":"submission_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFunderSubmissionRequestSchema"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFunderSubmissionResponseSchema"}}},"description":"Submission accepted and queued for processing"},"400":{"description":"Submission cannot be submitted in its current status"},"404":{"description":"End user or funder submission not found"},"409":{"description":"Submission is already in progress"},"503":{"description":"Submission could not be queued"}},"security":[{"ApiKeyAuth":[]}],"summary":"Submit an end user to a single funder"}},"/api/end_users/{end_user_heron_id}/verification":{"get":{"description":"Returns a field-by-field verification of a submission's subjects \u2014 the business and its\nowners \u2014 against every independent source that ran a KYB check for the submission.\n\nFor each field, the response gives a `state`, the independent sources consulted, and the\nvalue each returned. States are:\n\n- `verified` \u2014 the merchant stated this value and an independent source agrees\n- `conflict` \u2014 the merchant stated this value and an independent source disagrees\n- `not_verified` \u2014 no independent source confirmed it\n- `blank` \u2014 no value was provided on the submission\n","parameters":[{"description":"The Heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResponseSchema"}}},"description":"OK"},"404":{"description":"End user not found, or verification is not enabled for this account"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get an end user's verification","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}":{"delete":{"deprecated":true,"description":"Synchronously delete an end user and its associated transactions. Deprecated \u2014 use POST /end_users/{end_user_id_or_heron_id}/delete for async deletion instead.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete EndUser by heron_id or end_user_id (sync)","tags":["EndUsers"]},"get":{"description":"Get an end user using its end_user_id or heron_id\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUser"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser by heron_id or end_user_id","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/accounts":{"get":{"description":"Internal, interim. `heron_id` is always null; `group_key` is unstable and must never be persisted or compared across requests.\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/DeduplicatedAccountSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get deduplicated accounts (internal, interim)","tags":["EndUserAccounts"],"x-hidden":true}},"/api/end_users/{end_user_id_or_heron_id}/anomalies":{"get":{"description":"Get anomalies for given EndUser given a category label or heron id","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Label or Heron ID of category to find anomalies for","in":"query","name":"category_label_or_heron_id","required":true,"schema":{"example":"Revenue","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AnomalySchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser anomalies","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/bank_statement_summary":{"get":{"description":"Get the bank statement summary by month for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Determines how to group transactions. It supports calendar month (by_month) or rolling 30-day period (from last txns with rolling_30_days_from_last_txn or from today with rolling_30_days_from_today)","in":"query","name":"grouping","required":false,"schema":{"default":"by_month","enum":["by_month","by_data_source_account_heron_id","rolling_30_days_from_last_txn","rolling_30_days_from_today","by_month_by_data_source_account_heron_id","by_month_by_account","by_data_source_account_by_monthly_intervals"],"type":"string"}},{"description":"Number of full calendar months to show in the summary","in":"query","name":"num_full_calendar_months","required":false,"schema":{"minimum":1,"nullable":true,"type":"integer"}},{"description":"Account ids to include in the summary, if not provided, all accounts are included","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserBankStatementSummary"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser bank statement summary","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/benchmarks":{"get":{"description":"Get the benchmarks for each metric for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"benchmarks":{"items":{"$ref":"#/components/schemas/MetricBenchmarksSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"Metric benchmarks are not enabled for this user"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser metric benchmarks","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/bulk_category_feedback":{"post":{"description":"Provide bulk feedback on Transaction Categories for a specified end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Whether to process the feedback with high priority","in":"query","name":"high_priority","required":false,"schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserBulkCategoryFeedback"}}},"description":"A list of objects containing a Transaction's heron id and the suggested Category. If you provide a `heron_id` for Category, you don't need to provide other fields. If `heron_id` is provided, we disregard `label`.\n","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"category":{"description":"The applied category","properties":{"description":{"description":"Description of the category","type":"string"},"heron_id":{"description":"Unique ID of the category","type":"string"},"label":{"description":"The label of the category","type":"string"}},"type":"object"},"num_annotations":{"description":"The number of category annotations added","example":1,"type":"integer"},"transaction_heron_ids":{"description":"List of affected transaction heron IDs","items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Bulk create category feedback for an end user","tags":["EnrichmentFeedback"]}},"/api/end_users/{end_user_id_or_heron_id}/combined_financials":{"get":{"description":"Get the combined P&L & Balance Sheet data from financial documents for an EndUser","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"grouping","required":false,"schema":{"enum":["by_month","by_quarter","by_year",null],"nullable":true,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsSummarySchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser's combined financials","tags":["EndUserFinancials"]}},"/api/end_users/{end_user_id_or_heron_id}/data_source_account_summary":{"get":{"description":"Get a list of data sources accounts & their summarised information for a company\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"by_data_source_account_heron_id (default): one row per data source account. by_data_source_account_by_monthly_intervals: splits each account's coverage into ~1-month rows anchored on end_date, each with its own period_start_date/period_end_date and metrics computed only over that period's window.\n","in":"query","name":"grouping","schema":{"default":"by_data_source_account_heron_id","enum":["by_data_source_account_heron_id","by_data_source_account_by_monthly_intervals"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataSourceAccountSummaryPublicSchema"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get data source account summary","tags":["EndUserDataSources"]}},"/api/end_users/{end_user_id_or_heron_id}/data_source_accounts/disable_duplicates":{"post":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"start_date","required":false,"schema":{"format":"date","nullable":true,"type":"string"}},{"in":"query","name":"end_date","required":false,"schema":{"format":"date","nullable":true,"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Disable duplicate data source accounts for an end user","tags":["EndUserDataSourceAccounts"]}},"/api/end_users/{end_user_id_or_heron_id}/data_sources":{"get":{"description":"Get a list of data sources for a company\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserDataSources"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get data sources","tags":["EndUserDataSources"]}},"/api/end_users/{end_user_id_or_heron_id}/data_sources/summary":{"get":{"description":"Get a page of an end user's data sources with dashboard aggregates, newest first.","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Pagination page number","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Pagination limit per page","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"Filter to these PDF statuses. Repeat the parameter for more than one.","explode":true,"in":"query","name":"pdf_status","required":false,"schema":{"items":{"enum":["new","parsing","parsed","processed","human_reviewing","approved","rejected","failed","transactions_loaded","transactions_unloaded"],"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Filter by whether the data source is enabled.","in":"query","name":"is_enabled","required":false,"schema":{"nullable":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"properties":{"counts":{"properties":{"by_pdf_status":{"additionalProperties":{"type":"integer"},"type":"object"},"disabled":{"type":"integer"},"total":{"type":"integer"}},"required":["total","disabled","by_pdf_status"],"type":"object"}},"required":["counts"],"type":"object"}]},"data_sources":{"items":{"$ref":"#/components/schemas/EndUserDataSourceSummarySchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get paginated data source summaries","tags":["EndUserDataSources"]}},"/api/end_users/{end_user_id_or_heron_id}/debt_candidates":{"get":{"description":"Identify potential debt candidates.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserMerchantSummary"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser debt candidates","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/decision_logic":{"post":{"description":"Upload DecisionLogic XML files for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"ISO 4217 currency code","in":"query","name":"currency","required":false,"schema":{"example":"USD","type":"string"}}],"requestBody":{"content":{"application/xml":{"schema":{"type":"string"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload DecisionLogic XML","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/delete":{"post":{"description":"Asynchronously delete an end user and its associated transactions. Returns immediately with a 202 status while deletion proceeds in the background.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"heron_id":{"example":"eus_Eqio3Y4dhyNiMphrXwG58p","type":"string"},"status":{"example":"pending","type":"string"}},"type":"object"}}},"description":"Accepted \u2014 deletion is in progress"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete EndUser by heron_id or end_user_id (async)","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/emails":{"get":{"description":"Get the emails associated with an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserEmailSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser emails","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/end_user_information":{"get":{"description":"Get the company details of an end user including loan information","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserInformationSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser information","tags":["EndUsers"]},"patch":{"description":"Update the end user information","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserInformationPatchSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserInformationSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Patch EndUser information","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/enrich":{"post":{"description":"Enriches transactions of an end user identified by its end_user_id or heron_id. There is an optional `priority` parameter that can be set to `high` to prioritize the enrichment over `normal` (default) priority. High priority enrichment is only enabled for enterprise-level accounts. Please contact support@herondata.io to upgrade your account.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Priority for async enrichment","in":"query","name":"priority","required":false,"schema":{"default":"normal","enum":["normal","high"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/EndUser"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Enrich transactions of EndUser","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/evaluate_rules":{"get":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RuleEvaluationSchema"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Evaluate all rules for an end user","tags":["EndUserRules"]}},"/api/end_users/{end_user_id_or_heron_id}/export_spreadsheet":{"get":{"description":"Export a spreadsheet for an end user containing key metrics and reports\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"format":"binary","type":"string"}}},"description":"OK"},"400":{"description":"No transaction data available for the end user"},"500":{"description":"Spreadsheet generation failed"}},"security":[{"ApiKeyAuth":[]}],"summary":"Export as a spreadsheet","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/files":{"get":{"description":"Get all files for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserFileSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUserFiles","tags":["EndUserFiles"]},"post":{"deprecated":true,"description":"Deprecated \u2014 use [Post EndUserFile V2](/api-reference/enduserfiles/post-enduserfile-v2) instead.","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileUploadSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Post EndUserFile","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/files/download":{"get":{"description":"Download all files for an end user as a zip","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/zip":{"schema":{"format":"binary","type":"string"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Download EndUserFiles","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/files/parsed_results/xlsx":{"get":{"parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"format":"binary","type":"string"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Download xlsx of parsed results from uploaded files","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/files/summary":{"get":{"description":"Get a page of an end user's files, newest first, with the parse status, field validation counts and email classification the full files response carries inside parsed_results, but without the parsed bodies themselves.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Pagination page number","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Pagination limit per page","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"Filter to these file classes. Repeat the parameter for more than one.","explode":true,"in":"query","name":"file_class","required":false,"schema":{"items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"in":"query","name":"has_bank_statement","required":false,"schema":{"nullable":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"files":{"items":{"$ref":"#/components/schemas/EndUserFileSummarySchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUserFile summaries","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/files/v2":{"post":{"description":"Upload file to an end user & asynchronously classify its type. After uploading, call the `/start_workflow` endpoint to trigger downstream processing (parsing, bank statement extraction, etc.).\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"description":"The file to upload","format":"binary","type":"string"},"file_class":{"description":"(Optional) - The type of file. Common values: bank_statement, iso_application_form, debt_summary, void_check, invoice, pnl_statement, balance_sheet, tax_return, money_market_statement. Contact Heron support for the full list of file classes available for your account.","type":"string"},"reference_id":{"description":"Your reference id for the file","type":"string"}},"required":["file"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"OK"},"409":{"content":{"application/json":{"schema":{"properties":{"code":{"example":409,"type":"integer"},"description":{"type":"string"},"end_user_file_heron_id":{"description":"Heron ID of the existing duplicate file","type":"string"},"name":{"example":"Conflict","type":"string"}},"type":"object"}}},"description":"File content duplicates an already uploaded file, or an identical file is still being saved. If an earlier upload of the same file was interrupted, retries get this 409 for up to 100 seconds. Returned only when duplicate rejection is enabled for the account.\n"}},"security":[{"ApiKeyAuth":[]}],"summary":"Post EndUserFile V2","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/finicity/connect":{"post":{"description":"Create a Finicity Link for an end user and send a Finicity Connect email to the end user to initiate the connection. The end user must have sufficient end user information to create the link.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Send a Finicity Connect email to an end user","tags":["Integrations"]}},"/api/end_users/{end_user_id_or_heron_id}/finicity/request_cashflow_report":{"post":{"description":"Request a cashflow report generation for an end user. When the report is ready it will be available as EndUserFile.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinicityRequestCashflowReportSchema"}}},"required":true},"responses":{"202":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a cashflow report generation for an end user","tags":["Integrations"]}},"/api/end_users/{end_user_id_or_heron_id}/finicity/request_statement_reports":{"post":{"description":"Request a Finicity statement reports generation for end user. Reports will be generated for each account available and each month going back in time between min_statement_index and max_statement_index. When the report is ready it will be available as EndUserFile.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinicityRequestStatementReportsSchema"}}},"required":true},"responses":{"202":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a statement reports generation for an end user","tags":["Integrations"]}},"/api/end_users/{end_user_id_or_heron_id}/finicity/request_voe_transactions_report":{"post":{"description":"Request a Finicity VOE transactions report generation for an end user. When the report is ready it will be available as an EndUserFile.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinicityRequestVoeTransactionsReportSchema"}}},"required":true},"responses":{"202":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a Finicity VOE transactions report generation for an end user","tags":["Integrations"]}},"/api/end_users/{end_user_id_or_heron_id}/grouped_transactions_report":{"get":{"description":"Get a report of transactions grouped by merchant or counterparty for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserGroupedTransactionsReport"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser transactions grouped by counterparty or merchant","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/heron_score":{"get":{"description":"Get Heron Score for end user with a breakdown of the feature group contributions which resulted in the score. The score is calculated for the day of last transaction. This is a beta feature and is subject to change.","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Minimum company categorisation confidence to calculate Heron Score","in":"query","name":"min_category_confidence","required":false,"schema":{"example":0.8,"nullable":true,"type":"number"}},{"description":"Cut-off date to consider transactions to for calculating heron score (inclusive)","in":"query","name":"date","required":false,"schema":{"example":"2023-01-19","format":"date","nullable":true,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeronScoreSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser Heron Score (beta)","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/inscribe":{"post":{"description":"Upload Inscribe JSON for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InscribeSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload Inscribe","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/integration_links":{"get":{"description":"Get a list of integration links for a specified end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"links":{"items":{"$ref":"#/components/schemas/IntegrationLinkSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get Integration Links","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/iso_application_form":{"post":{"description":"Use this endpoint to upload an ISO application PDF. Once uploaded, the file will be automatically scrubbed asynchronously. You can use the returned iso_application heron_id (prefixed \"iso_\") to fetch the scrubbing results. Please contact support@herondata.io to enable this endpoint.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"format":"binary","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserFileSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload an ISO application PDF for for an end user","tags":["ISOApplication"]}},"/api/end_users/{end_user_id_or_heron_id}/iso_applications":{"get":{"description":"Get all ISO applications for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GetIsoApplicationSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser ISO Applications","tags":["ISOApplication"]}},"/api/end_users/{end_user_id_or_heron_id}/location":{"get":{"description":"Get the company physical address coordinates","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserAddressLocationSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser physical location","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/merchant_feedback":{"post":{"description":"Provide bulk feedback on Transaction Merchants for a specified end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserBulkMerchantFeedback"}}},"description":"Merchant feedback for transactions. Provide either a merchant_heron_id (for known merchants) or merchant_name (for unknown merchants to be logged).\n","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"num_annotations":{"description":"The number of merchant annotations added","example":1,"type":"integer"},"transaction_heron_ids":{"description":"List of affected transaction heron IDs","items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Bulk create merchant feedback for an end user","tags":["EnrichmentFeedback"]}},"/api/end_users/{end_user_id_or_heron_id}/merchant_feedback/revert":{"post":{"description":"Revert merchant feedback annotations created by the feedback_client annotator","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserMerchantFeedbackRevert"}}},"description":"List of transaction heron IDs to revert merchant feedback","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"reverted":{"description":"List of transaction heron IDs that were reverted","items":{"type":"string"},"type":"array"},"skipped":{"description":"List of transaction heron IDs that were skipped","items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Revert merchant feedback for an end user","tags":["EnrichmentFeedback"]}},"/api/end_users/{end_user_id_or_heron_id}/merchant_summary":{"get":{"description":"Get the summary of transactions by merchant for an end user for given categories or analytics groups","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"explode":true,"in":"query","name":"category_label_or_heron_id","required":false,"schema":{"items":{"type":"string"},"minItems":1,"nullable":true,"type":"array"},"style":"form"},{"explode":true,"in":"query","name":"analytics_group","required":false,"schema":{"items":{"description":"The category analytics group","enum":["revenue","cost_of_goods_sold","operational_expenses","tax_expenses","intra_company","debt","equity","other_income","special_items","other",null],"example":"debt","nullable":true,"type":"string"},"minItems":1,"nullable":true,"type":"array"},"style":"form"},{"description":"Whether to group by counterparty transaction clusters","in":"query","name":"group_by_counterparty_txn_clusters","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"Account ids to include in the summary, if not provided, all accounts are included","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserMerchantSummary"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser merchant summary","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/missing_accounts":{"get":{"description":"Get a list of possible missing accounts for a given End User. This endpoint is in beta and likely to change.","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"missing_accounts":{"items":{"$ref":"#/components/schemas/MissingAccountSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get Missing Accounts (beta)","tags":["EndUserAccounts"]}},"/api/end_users/{end_user_id_or_heron_id}/named_dates":{"get":{"description":"Get the named dates associated with an end user, e.g., date of last transaction","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"named_dates":{"items":{"$ref":"#/components/schemas/NamedDateSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser named dates","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/ocrolus":{"post":{"description":"Upload Ocrolus JSON for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Skip the check for the number of transactions in the payload","in":"query","name":"skip_num_txns_check","required":false,"schema":{"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OcrolusSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload Ocrolus","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/pdfs":{"get":{"description":"Get list of PDFs for a specified end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Include processed results where applicable per pdf","in":"query","name":"with_processed_results","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"pdfs":{"items":{"$ref":"#/components/schemas/PdfGetSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get PDFs","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/pdfs/parse":{"post":{"description":"Starts parsing all PDFs for a specified end users. This will not restart any PDFs that are already being parsed\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"pdf_heron_ids":{"items":{"type":"string"},"type":"array"},"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Parse all PDF","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/pdfs/v1":{"post":{"description":"Upload encoded PDF of transactions for a specified end user to translate into Heron Data format\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfPostSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"pdf_heron_id":{"description":"Heron id of the uploaded pdf file","type":"string"},"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}}},"description":"OK"},"409":{"description":"File content duplicates an already uploaded file, or an identical file is still being saved. If an earlier upload of the same file was interrupted, retries get this 409 for up to 100 seconds. Duplicates are rejected only when duplicate rejection is enabled for the account."}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload PDF","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/plaid/assets":{"post":{"description":"Upload Plaid asset JSON for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaidAssetsSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload Plaid assets","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/plaid/transactions":{"post":{"description":"Upload Plaid transactions JSON for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaidTransactionsSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload Plaid transactions","tags":["EndUserIntegrations"]}},"/api/end_users/{end_user_id_or_heron_id}/policy_evaluations":{"get":{"description":"Evaluates the user's policies against end user on-the-fly\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PolicyEvaluationSchema"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the policy evaluations for an end user","tags":["Policy"]}},"/api/end_users/{end_user_id_or_heron_id}/positions":{"get":{"description":"Returns positions with calculated metrics for an end user, optionally filtered by account IDs","parameters":[{"description":"The end user ID or heron ID","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Account IDs to filter positions by","in":"query","name":"account_ids","schema":{"items":{"type":"string"},"type":"array"}},{"description":"If true, include investment/repayment/reversal transactions on each position","in":"query","name":"include_transactions","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserPositions"}}},"description":"Positions summary retrieved successfully"},"404":{"description":"End user not found"}},"summary":"Get positions summary for end user","tags":["Positions"]}},"/api/end_users/{end_user_id_or_heron_id}/processing_status":{"get":{"description":"Get the current processing status of an end user by heron_id or end_user_id. Returns whether the end user is currently being processed or has completed processing.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserProcessingStatusSchema"}}},"description":"Successfully retrieved processing status"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser processing status","tags":["EndUsers"]}},"/api/end_users/{end_user_id_or_heron_id}/profit_and_loss":{"get":{"description":"Calculates the cashflow profit & loss table for an end user, based on the layout defined (if any)\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"The earliest transaction timestamp date to use","in":"query","name":"from_date","required":false,"schema":{"example":"2022-01-01","format":"date","nullable":true,"type":"string"}},{"description":"The latest transaction timestamp date to use","in":"query","name":"to_date","required":false,"schema":{"example":"2022-01-31","format":"date","nullable":true,"type":"string"}},{"description":"If true, dates are sorted left to right by ascending order. False by default, i.e., by default sorted in descending date order so more recent dates are first","in":"query","name":"dates_ascending","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"ISO 4217 currency code for balance","in":"query","name":"currency","required":false,"schema":{"enum":["GBP","USD","EUR","CAD","AUD",null],"example":"USD","nullable":true,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfitAndLossSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser cashflow P&L","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/profit_and_loss_layout":{"put":{"description":"Update the profit and loss layout for the end user, which determines how the profit and loss table is calculated\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfitAndLossLayoutUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfitAndLossLayoutSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update EndUser P&L layout","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/recurring_transactions_report":{"get":{"description":"Get a report of recurring transactions grouped by merchant or counterparty for an end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Account ids to include in the report, if not provided, all accounts are included","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EndUserRecurringTransactionsReport"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser recurring transactions report","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/scorecard":{"get":{"description":"Get scorecard metrics and rule violations for a user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Cut-off date to consider transactions to for calculating scorecard (inclusive)","in":"query","name":"date","required":false,"schema":{"example":"2023-01-19","format":"date","nullable":true,"type":"string"}},{"description":"Qualitative description for date to calculate scorecard","in":"query","name":"named_date","required":false,"schema":{"enum":["end_user_created","end_user_last_updated","last_transaction","end_user_last_enriched","last_data_source_end_date_or_transaction_timestamp","custom_date",null],"example":"end_user_created","nullable":true,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"metrics":{"items":{"$ref":"#/components/schemas/Metric"},"type":"array"},"rule_violations":{"items":{"$ref":"#/components/schemas/RuleViolation"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser scorecard","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/scorecard/async":{"post":{"description":"Request scorecard metrics for a date and end user","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Cut-off date to consider transactions to for calculating scorecard (inclusive)","in":"query","name":"date","required":true,"schema":{"example":"2023-01-19","format":"date","type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Request EndUser scorecard","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/start_workflow":{"post":{"description":"Starts your configured Heron workflow for an end user","parameters":[{"description":"The end user's ID or heron_id","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean"}},"type":"object"}}},"description":"Heron workflow triggered successfully"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start Workflow","tags":["EndUserFiles"]}},"/api/end_users/{end_user_id_or_heron_id}/tags":{"get":{"description":"Return the tags currently applied to the end user, ordered by name.","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tags":{"items":{"$ref":"#/components/schemas/TagSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List an end user's tags","tags":["Tags"]},"post":{"description":"Add the given tags to the end user, leaving any tags already applied in place. Re-sending a tag that is already applied is a no-op, so retries are safe. Every tag heron_id must exist, otherwise none are applied. Where your access is restricted by tag, you can only add tags you hold.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserTagsSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tags":{"items":{"$ref":"#/components/schemas/TagSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"End user not found"},"422":{"description":"A tag is unknown, or is outside your access scope"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add tags to an end user","tags":["Tags"]},"put":{"description":"Set the end user's tags to exactly the tags given, adding and removing as needed. Send an empty list to clear every tag. Every tag heron_id must exist, otherwise nothing changes. Where your access is restricted by tag, this replaces only the tags you hold: any other tag already on the end user stays applied, so the response can include tags you did not send.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserTagsSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tags":{"items":{"$ref":"#/components/schemas/TagSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"End user not found"},"422":{"description":"A tag is unknown, or is outside your access scope"}},"security":[{"ApiKeyAuth":[]}],"summary":"Replace an end user's tags","tags":["Tags"]}},"/api/end_users/{end_user_id_or_heron_id}/tags/{tag_heron_id}":{"delete":{"description":"Remove one tag from the end user. Removing a tag that is not applied succeeds, so retries are safe. The tag itself is not deleted. Where your access is restricted by tag, you can only remove tags you hold.\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"tag_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"404":{"description":"End user not found"},"422":{"description":"The tag is unknown, or is outside your access scope"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove a tag from an end user","tags":["Tags"]}},"/api/end_users/{end_user_id_or_heron_id}/transaction_data_coverage":{"get":{"description":"Information about dates covered by any transaction data source","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"start_date","required":true,"schema":{"format":"date","type":"string"}},{"in":"query","name":"end_date","required":true,"schema":{"format":"date","type":"string"}},{"in":"query","name":"include_disabled_data_sources","required":false,"schema":{"default":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserTransactionDataCoverageSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get EndUser transaction data coverage","tags":["EndUserCalculations"]}},"/api/end_users/{end_user_id_or_heron_id}/transactions":{"get":{"description":"Get all unique transactions for a single end user. Set end user status to \"ready\" to initiate transaction enrichment, otherwise may contain both enriched and unenriched transactions\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}},{"description":"Filter for transactions whose values were last updated in Heron systems after the specified input value, isoformat","in":"query","name":"last_updated_min","required":false,"schema":{"example":"2026-10-06T22:12:38.080306","format":"date-time","nullable":true,"type":"string"}},{"description":"Results page","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Desired results per page","in":"query","name":"per_page","required":false,"schema":{"default":100,"maximum":50000,"minimum":1,"type":"integer"}},{"description":"Account ids to include. If not provided, all accounts are included","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Filter by the heron_id of the category that the transaction is annotated with","explode":true,"in":"query","name":"category_heron_id","required":false,"schema":{"default":[],"example":"ctg_LujAEExcf35NNtC8UDmxEL","items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Filter by data source Heron ID","in":"query","name":"data_source_heron_id","required":false,"schema":{"type":"string"}},{"description":"What to order transactions by","in":"query","name":"order_by","required":false,"schema":{"default":"id_asc","enum":["amount_asc","amount_desc","abs_amount_asc","abs_amount_desc","description_asc","description_desc","timestamp_asc","timestamp_desc","id_asc","id_desc","confidence_asc","confidence_desc","created_asc","created_desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"transactions_enriched":{"items":{"$ref":"#/components/schemas/TransactionEnriched"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get end user transactions","tags":["EnrichedTransactions"]},"post":{"description":"Upload transactions for a specific end user. Does not include enriching transactions -- set end user status = 'ready' to initiate processing. For synchronous enrichment, please instead use \"Enrich transactions (sync). Either timestamp (preferred) or date must be present in the transaction payload.\"\n","parameters":[{"in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndUserTransactionsPostAsyncSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"},"transactions_loaded":{"description":"The number of transactions loaded","type":"integer"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create end user transactions (async)","tags":["Transactions"]}},"/api/end_users/{end_user_id_or_heron_id}/yodlee":{"post":{"description":"Upload Yodlee JSON files for a specified end user to translate into Heron Data format and add transactions for the end user\n","parameters":[{"description":"The `end_user_id` or `heron_id` of EndUser to upload","in":"path","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YodleeSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload Yodlee","tags":["EndUserIntegrations"]}},"/api/end_users/{heron_id}/crm_sync":{"get":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CrmSyncEventSchema"},"type":"array"}}},"description":"The list of CRM events that occurred for this end user"}},"security":[{"ApiKeyAuth":[]}],"summary":"Retrieve CRM sync events for an end user","tags":["EndUsers"]},"post":{"parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"crm_sync_triggered":{"type":"boolean"},"heron_id":{"description":"The Heron ID of the End User","type":"string"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a CRM Sync for an End User","tags":["EndUsers"]}},"/api/entities/post_processors":{"get":{"description":"Returns a list of all available post processors that can be applied to entity attributes","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostProcessorsResponseSchema"}}},"description":"List of available post processor and configurations"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get all available post processors","tags":["EndUserEntity"],"x-hidden":true}},"/api/funder_exclusion_rules/":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CustomerFunderExclusionRuleSchema"},"type":"array"}}},"description":"Customer funder exclusion rules"},"404":{"description":"Broker customer not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List funder exclusion rules"}},"/api/funder_exclusion_rules/bulk/":{"delete":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkFunderExclusionRuleTargetSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BulkFunderExclusionRuleResultSchema"},"type":"array"}}},"description":"Outcome per deduplicated funder, in request order; key by funder_heron_id, not index"},"404":{"description":"Broker customer, funder, or funder exclusion rule not found"},"422":{"description":"Invalid request body"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete many funder exclusion rules"},"patch":{"description":"A rule left with no senders is deleted.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkFunderExclusionRuleUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BulkFunderExclusionRuleResultSchema"},"type":"array"}}},"description":"Outcome per deduplicated funder, in request order; key by funder_heron_id, not index"},"400":{"description":"Nothing to add or remove"},"404":{"description":"Broker customer, funder, or funder exclusion rule not found"},"422":{"description":"Invalid request body"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add and remove sender matchers across many funder exclusion rules"},"post":{"description":"Creates a rule for each funder without one, and unions the senders into the rest.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkFunderExclusionRuleCreateSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BulkFunderExclusionRuleResultSchema"},"type":"array"}}},"description":"Outcome per deduplicated funder, in request order; key by funder_heron_id, not index"},"400":{"description":"Missing sender matcher"},"404":{"description":"Broker customer or funder not found"},"422":{"description":"Invalid request body"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add sender matchers to many funder exclusion rules"}},"/api/funder_exclusion_rules/{funder_heron_id}/":{"delete":{"parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted funder exclusion rule"},"404":{"description":"Broker customer or rule not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a funder exclusion rule"},"put":{"parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerFunderExclusionRuleInputSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerFunderExclusionRuleSchema"}}},"description":"Replaced funder exclusion rule"},"400":{"description":"Invalid matcher"},"404":{"description":"Broker customer or funder not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create or replace a funder exclusion rule"}},"/api/funder_integrations/":{"get":{"description":"Returns one entry per linked integration (API/portal) funder, with its current state, configuration, and last test result.\n","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunderIntegrationViewSchema"},"type":"array"}}},"description":"List of funder integration states"}},"security":[{"ApiKeyAuth":[]}],"summary":"List funder integration states for the current broker"},"post":{"description":"Links a funder the broker can configure. Returns the new entry in the same shape as `GET /api/funder_integrations/`.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFunderIntegrationRequestSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunderIntegrationViewSchema"}}},"description":"Funder linked"},"400":{"description":"Funder not supported for self-service"},"404":{"description":"Funder not found"},"409":{"description":"Broker is already linked to this funder"}},"security":[{"ApiKeyAuth":[]}],"summary":"Link a funder to the current broker for self-service"}},"/api/funder_integrations/candidates/":{"get":{"description":"Returns the funders the broker can link but hasn't yet, sorted alphabetically.\n","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunderCandidateSchema"},"type":"array"}}},"description":"List of available funders"}},"security":[{"ApiKeyAuth":[]}],"summary":"List funders available for self-service that the broker hasn't linked yet"}},"/api/funder_integrations/{funder_heron_id}/":{"delete":{"description":"With an `environment`, deletes that environment's saved integration. With `remove=true`, removes the funder entirely. Exactly one of the two must be given: full removal is destructive (scrubs credentials and deletes the funder's policies row), so it must be requested explicitly \u2014 an absent or mistyped `environment` must never escalate into it.\n","parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"environment","required":false,"schema":{"enum":["staging","production"],"type":"string"}},{"in":"query","name":"remove","required":false,"schema":{"type":"boolean"}}],"responses":{"204":{"description":"Funder removed, or environment integration deleted"},"400":{"description":"Neither `environment` nor `remove=true` given, or both given"},"404":{"description":"Funder not linked, or no integration configured for this environment"},"409":{"description":"Funder cannot be removed due to active API keys"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove a funder, or delete one environment's saved integration"},"patch":{"description":"Saves the funder's submission email address and CC list, and optionally switches its submission channel (integration or email). An omitted or null `channel` keeps the current channel, so email-field saves can never change how deals are routed. Returns the updated funder entry.\n","parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFunderIntegrationRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunderIntegrationViewSchema"}}},"description":"Funder updated"},"400":{"description":"Invalid input (unsupported channel, malformed email)"},"404":{"description":"Funder not linked to current broker"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a funder's submission channel and email configuration"},"put":{"description":"Saves the funder's staging or production configuration.\n","parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveFunderIntegrationRequestSchema"}}},"required":true},"responses":{"200":{"description":"Integration saved"},"400":{"description":"Invalid input (missing fields, unsupported funder, promotion gate)"},"404":{"description":"Funder not linked to current broker"}},"security":[{"ApiKeyAuth":[]}],"summary":"Save staging or production form values for a funder integration"}},"/api/funder_integrations/{funder_heron_id}/test/":{"post":{"description":"Submits the synthetic test end user to the selected funder environment. Returns the funder submission Heron ID. Frontend polls `/funder_submissions/{id}/` for the result.\n","parameters":[{"in":"path","name":"funder_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerTestRequestSchema"}}},"required":false},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerTestResponseSchema"}}},"description":"Test triggered"},"400":{"description":"Credentials not configured"},"404":{"description":"Funder not linked to current broker"},"409":{"description":"A test is already in progress for this funder"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a staging or production test submission for this funder"}},"/api/funder_submissions/":{"post":{"description":"Find or create a funder submission for the given end user and funder pair. Returns the existing submission if one already exists (unique per end_user + funder).\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertFunderSubmissionRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunderSubmissionSchema"}}},"description":"Funder submission found or created"},"404":{"description":"End user or funder not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upsert a funder submission"}},"/api/funder_submissions/{submission_heron_id}/":{"get":{"description":"Returns the status and details of a funder submission. Use this to poll after triggering a submission.","parameters":[{"description":"The Heron ID of the funder submission","in":"path","name":"submission_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunderSubmissionSchema"}}},"description":"Funder submission details"},"404":{"description":"Funder submission not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get funder submission status"}},"/api/funder_submissions/{submission_heron_id}/trigger/":{"post":{"description":"Triggers an async submission to a funder. Returns 202 immediately; poll via GET /funder_submissions/{submission_heron_id}/ to check progress. Set resend=true with use_sandbox=false to submit a previously sent or declined lane with a successful production attempt again.\n","parameters":[{"description":"The Heron ID of the funder submission","in":"path","name":"submission_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFunderSubmissionRequestSchema"}}},"required":true},"responses":{"202":{"description":"Submission accepted and queued for processing"},"400":{"description":"Submission has a non-submittable status"},"404":{"description":"Funder submission not found"},"409":{"description":"Submission is already in progress"},"503":{"description":"Submission could not be queued"}},"security":[{"ApiKeyAuth":[]}],"summary":"Trigger a funder submission"}},"/api/funders/":{"get":{"description":"Returns funders whose name or aliases fuzzy-match `q`, capped at `limit` (max 50).\nRequires `q` (min 3 characters); bulk listing is no longer supported.\n","parameters":[{"description":"Funder name (or alias) prefix/fuzzy search term.","in":"query","name":"q","required":true,"schema":{"minLength":3,"type":"string"}},{"description":"Maximum number of matching funders to return (capped server-side).","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":50,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Funder"},"type":"array"}}},"description":"Matching funders sorted by similarity descending."}},"security":[{"ApiKeyAuth":[]}],"summary":"Search funders by name","tags":["Funders"]}},"/api/funders/linked":{"get":{"description":"Get a list of funders linked to the current user","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"funders":{"items":{"$ref":"#/components/schemas/Funder"},"type":"array"}},"type":"object"}}},"description":"List of user's linked funders"}},"security":[{"ApiKeyAuth":[]}],"summary":"List your linked funders","tags":["Funders"]}},"/api/funders/search/":{"get":{"description":"Search the Heron funder database by name using fuzzy matching. Returns a lightweight list of matching funders for the frontend picker UI.\n","parameters":[{"description":"Funder name to search for (e.g. 'iwoca', 'Funding Circle')","in":"query","name":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FunderSearchResultSchema"},"type":"array"}}},"description":"List of matching funders"}},"security":[{"ApiKeyAuth":[]}],"summary":"Search funders by name"}},"/api/funders/{heron_id}":{"get":{"description":"Get details of a specific funder by heron_id","parameters":[{"description":"The funder's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"funder":{"$ref":"#/components/schemas/Funder"}},"type":"object"}}},"description":"Funder details"},"404":{"description":"Funder not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a single funder","tags":["Funders"]}},"/api/hello_world":{"get":{"description":"Test endpoint (no authentication)","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"hello":{"type":"string"}},"type":"object"}}},"description":"url works"}},"tags":["Testing"]}},"/api/hello_world/authenticated":{"get":{"description":"Test authentication","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"hello":{"type":"string"}},"type":"object"}}},"description":"Authentication works"},"401":{"description":"Unauthorized"}},"security":[{"ApiKeyAuth":[]}],"tags":["Testing"]}},"/api/hello_world/oauth":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"hello":{"type":"string"},"organization_id":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"},"subject":{"type":"string"}},"type":"object"}}},"description":"Token grants identity:read; no Heron tenant authorization is performed"},"401":{"description":"Missing or invalid OAuth token"},"403":{"description":"Token lacks identity:read"},"503":{"description":"OAuth configuration or signing keys unavailable"}},"security":[{"OAuthBearer":[]}],"summary":"Verify an OAuth token without accessing customer data","tags":["Testing"],"x-hidden":true}},"/api/hello_world/oauth/{endpoint_id}":{"get":{"parameters":[{"description":"heron_id of an MCP endpoint","in":"path","name":"endpoint_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"environment":{"type":"string"},"environment_type":{"type":"string"},"hello":{"type":"string"},"organization_slug":{"type":"string"},"subject":{"type":"string"}},"type":"object"}}},"description":"The token's member may act on this environment"},"401":{"description":"Missing or invalid OAuth token"},"403":{"description":"Token lacks identity:read, or the member's roles do not cover the environment"},"404":{"description":"No MCP endpoint with that id belongs to the token's organization"},"503":{"description":"OAuth configuration, signing keys or member directory unavailable"}},"security":[{"OAuthBearer":[]}],"summary":"Resolve an OAuth token plus an MCP endpoint to the Heron environment it may act on","tags":["Testing"],"x-hidden":true}},"/api/ingestion/crm/{crm_integration_heron_id}":{"post":{"description":"Receives a webhook payload from a CRM integration and syncs the end user via the ingestion pipeline. Per-CRM payload shapes are parsed by the matching CRM client; only the generic ingestion controls documented below are read directly here.\n","parameters":[{"description":"Heron ID of the CRM integration","in":"path","name":"crm_integration_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"start_workflow":{"default":false,"description":"When true, entity data nudges the policy workflow only if no files are saved. Saved files start the workflow through their classification pipeline. Broker callers omit it because their submission trigger owns workflow progress.\n","type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"end_user_heron_id":{"type":"string"}},"type":"object"}}},"description":"End user successfully ingested"},"400":{"description":"Invalid payload or unsupported CRM provider"},"404":{"description":"CRM integration not found"}},"summary":"Ingest end user data from a CRM webhook"}},"/api/integration_links/{item_id}":{"put":{"description":"Allows refreshing the access_token of an existing Integration Link","parameters":[{"in":"path","name":"item_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"end_user":{"$ref":"#/components/schemas/IntegrationLinkUpdateSchema"}},"type":"object"}}},"description":"IntegrationLink","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"integration_link":{"$ref":"#/components/schemas/IntegrationLinkSchema"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update an Integration Link","tags":["Integrations"]}},"/api/integrations":{"get":{"description":"Get a list of Integrations","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"integrations":{"items":{"$ref":"#/components/schemas/IntegrationSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"List Integrations","tags":["Integrations"]},"post":{"description":"Create an integration e.g. with Plaid","requestBody":{"content":{"application/json":{"schema":{"properties":{"integration":{"$ref":"#/components/schemas/IntegrationSchema"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"integration":{"$ref":"#/components/schemas/IntegrationSchema"}},"type":"object"}}},"description":"Created"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an integration","tags":["Integrations"]}},"/api/integrations/pdfs/admin/invalidate_cache_sources":{"post":{"description":"Prevents the named PDFs from seeding later same-hash parses.","requestBody":{"content":{"application/json":{"schema":{"properties":{"pdf_heron_ids":{"items":{"type":"string"},"minItems":1,"type":"array"}},"required":["pdf_heron_ids"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"not_found":{"items":{"type":"string"},"type":"array"},"updated":{"items":{"type":"string"},"type":"array"}},"required":["updated","not_found"],"type":"object"}}},"description":"Cache sources invalidated"},"422":{"description":"Invalid request body"}},"summary":"Invalidate PDF cache sources","x-hidden":true}},"/api/integrations/pdfs/{heron_id}":{"get":{"description":"Retrieve a single PDF document by its heron_id. Returns the PDF metadata, status information, and optionally the processed statements/transactions. Users can only access their own PDFs.\n","parameters":[{"description":"The heron_id of the PDF to retrieve","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"description":"Include processed statements/transactions in the response","in":"query","name":"with_processed_results","required":false,"schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"pdf":{"$ref":"#/components/schemas/PdfGetSchema"}},"type":"object"}}},"description":"Successfully retrieved PDF"},"404":{"content":{"application/json":{"schema":{"properties":{"message":{"example":"no pdf with heron_id=example_id found","type":"string"}},"type":"object"}}},"description":"PDF not found or user does not have access"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get single PDF by heron_id","tags":["EndUserIntegrations"]},"put":{"description":"Update PDF attributes including status\n","parameters":[{"description":"heron_id of the pdf","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfPutSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"pdf":{"$ref":"#/components/schemas/PdfGetSchema"},"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update PDF attributes including status","tags":["EndUserIntegrations"]}},"/api/integrations/pdfs/{heron_id}/admin/summary_parser_result/{summary_parser_id}":{"put":{"description":"Shallow-merges the body onto the stored result and records the change under `amendments`.","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"summary_parser_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object"}}},"required":true},"responses":{"200":{"description":"Summary parser result amended"},"400":{"description":"Invalid summary parser id or amendment body"},"404":{"description":"PDF or summary parser result not found"},"422":{"description":"Stored summary parser result is invalid"}},"summary":"Amend a summary parser result","x-hidden":true}},"/api/integrations/pdfs/{heron_id}/processed":{"patch":{"description":"Send patch transactions processed pdf that will override the extracted transactions in the specified statement\n","parameters":[{"description":"heron_id of the pdf","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfStatementPatchSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ok":{"type":"boolean"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Send patch transactions for a pdf statement","tags":["EndUserIntegrations"]}},"/api/integrations/pdfs/{heron_id}/reload_transactions":{"post":{"description":"This will load transactions for the pdf that is in a transactions unloaded status\n","parameters":[{"description":"heron_id of the pdf","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ok":{"type":"boolean"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Reloads transactions for a pdf","tags":["EndUserIntegrations"]}},"/api/integrations/pdfs/{heron_id}/unload_transactions":{"post":{"description":"This will delete all transactions that were previously loaded for the pdf\n","parameters":[{"description":"heron_id of the pdf","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ok":{"type":"boolean"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Unloads transactions for a pdf","tags":["EndUserIntegrations"]}},"/api/integrations/pdfs/{heron_id}/update_currency":{"post":{"description":"Update the currency for a PDF and all its statement summaries. The PDF must be in transactions_unloaded status.\n","parameters":[{"description":"heron_id of the PDF","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PdfDefaultCurrencyUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ok":{"type":"boolean"},"pdf":{"$ref":"#/components/schemas/PdfGetSchema"},"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"}}},"description":"PDF currency updated successfully"},"400":{"description":"Bad request - PDF not in correct status"},"404":{"description":"PDF not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update PDF currency","tags":["EndUserIntegrations"]}},"/api/integrations/{heron_id}":{"put":{"description":"Update an Integration","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"integration":{"$ref":"#/components/schemas/IntegrationSchema"}},"type":"object"}}},"description":"Integration","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"integration":{"$ref":"#/components/schemas/IntegrationSchema"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update Integration","tags":["Integrations"]}},"/api/integrations/{heron_id}/links":{"delete":{"description":"Soft-deletes of an integration link (sync is disabled)","parameters":[{"description":"The Integration's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"description":"Delete that end user's IntegrationLinks","in":"query","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"(Soft-)Delete an integration link","tags":["Integrations"]},"get":{"description":"Get a list of IntegrationLinks for an Integration filtered by end user","parameters":[{"description":"The Integration's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"description":"Return only IntegrationLinks for that end user","in":"query","name":"end_user_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"links":{"items":{"$ref":"#/components/schemas/IntegrationLinkSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get IntegrationLinks by Integration","tags":["Integrations"]},"post":{"description":"Create a Link for an active Integration every time a customer connects their bank. In Plaid, this is a Plaid Link every time a customer connects their bank. For Plaid, call this after exchanging a public token for an Item access_token.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationLinkSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"link":{"$ref":"#/components/schemas/IntegrationLinkNewSchema"}},"type":"object"}}},"description":"Created"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create an integration Link","tags":["Integrations"]},"put":{"description":"Refresh assets reports for an integration and specific end user. This will trigger a refresh operation for all active Plaid assets report links associated with the integration and end user.\n","parameters":[{"description":"The Integration's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"description":"Filter to refresh only links for this specific end user","in":"query","name":"end_user_id_or_heron_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAssetsReportsResponseSchema"}}},"description":"Assets reports refresh completed successfully"},"404":{"description":"Integration not found or no assets reports found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAssetsReportsResponseSchema"}}},"description":"Some assets reports failed to refresh (partial success)"}},"security":[{"ApiKeyAuth":[]}],"summary":"Refresh assets reports for integration links","tags":["Integrations"]}},"/api/integrations/{heron_id}/links/{link_item_id}/refresh":{"post":{"description":"Trigger a refresh operation for an IntegrationLink","parameters":[{"description":"The Integration's heron_id","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"description":"The IntegrationLink's item_id","in":"path","name":"link_item_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"link":{"$ref":"#/components/schemas/IntegrationLinkSchema"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Refresh an IntegrationLink","tags":["Integrations"]}},"/api/interaction_logs":{"post":{"description":"Log a user interaction from the frontend.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInteractionLogSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractionLogResponseSchema"}}},"description":"Interaction log created"},"404":{"description":"End user not found"}},"summary":"Create an interaction log","tags":["Interaction Logs"],"x-hidden":true}},"/api/iso_applications/":{"post":{"description":"Use this endpoint to upload an ISO application PDF. Once uploaded, the file will be automatically scrubbed asynchronously. You can use the returned heron_id (prefixed \"iso_\") to fetch the scrubbing results from the GET endpoint below. Please contact support@herondata.io to enable this endpoint.\n","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"format":"binary","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"heron_id":{"description":"e.g. iso_","type":"string"},"status":{"enum":["processing"],"type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload an ISO application PDF for automated scrubbing in under 15 seconds","tags":["ISOApplication"]}},"/api/iso_applications/base64":{"post":{"description":"This endpoint is for uploading ISO application PDFs in base64 format.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostIsoApplicationBase64Schema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"heron_id":{"description":"e.g. iso_","type":"string"},"status":{"enum":["processing"],"type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upload an ISO application PDF for automated scrubbing in under 15 seconds (base64)","tags":["ISOApplication"]}},"/api/iso_applications/reprocess/{heron_id}":{"post":{"description":"Use this endpoint to trigger reprocessing of a specific ISO application. This will re-run the parsing and validation process for the specified application.\n","parameters":[{"description":"The heron_id of the ISO application to reprocess","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"failed":{"description":"List of heron_ids that failed to reprocess","items":{"type":"string"},"type":"array"},"succeeded":{"description":"List of heron_ids that were successfully queued for reprocessing","items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Reprocess a single ISO application","tags":["ISOApplication"]}},"/api/iso_applications/{heron_id}":{"get":{"description":"Use this endpoint to retrieve the scrubbed results and data validations of an uploaded ISO application PDF once it has finished processing. If processing is still underway, the processing_status field will be \"processing\".\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIsoApplicationSchema"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the scrubbed results and data validations of an uploaded ISO application by its heron_id (prefixed \"iso_\")","tags":["ISOApplication"]}},"/api/mcp_endpoints":{"get":{"description":"Each endpoint names this environment in an MCP server URL by its id. The MCP client authenticates the caller with OAuth.\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"endpoints":{"items":{"$ref":"#/components/schemas/McpEndpointSchema"},"type":"array"}},"type":"object"}}},"description":"The environment's endpoints"}},"summary":"List MCP endpoints","tags":["MCP endpoints"],"x-hidden":true},"post":{"description":"Creates an endpoint for this environment. Its id becomes part of the MCP server URL. With require_request_secret, the response carries a secret, shown once, that every MCP request to the endpoint must send in the X-Auth-Token header.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMcpEndpointSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpEndpointCreatedSchema"}}},"description":"Endpoint created"},"403":{"description":"Only the organization's admins and Heron admins can manage MCP endpoints"},"422":{"description":"Invalid label"}},"summary":"Create an MCP endpoint","tags":["MCP endpoints"],"x-hidden":true}},"/api/mcp_endpoints/{heron_id}":{"delete":{"description":"Deletes the endpoint. Its MCP server URL stops resolving immediately.","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Endpoint deleted"},"403":{"description":"Only the organization's admins and Heron admins can manage MCP endpoints"},"404":{"description":"Endpoint not found"}},"summary":"Delete an MCP endpoint","tags":["MCP endpoints"],"x-hidden":true}},"/api/merchants/extract":{"post":{"description":"Extract Merchant from a transaction description","requestBody":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"PAYPAL* AMZN Mktp 198748320","type":"string"}},"required":["description"],"type":"object"}}},"description":"The bank transaction description as a string"},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"description_clean":{"example":"Amzn Mktp","nullable":true,"type":"string"},"merchant":{"$ref":"#/components/schemas/MerchantExtract","nullable":true},"payment_processor":{"$ref":"#/components/schemas/PaymentProcessor","nullable":true}},"type":"object"}}},"description":"The `merchant` key is not null when we find a positive match to our database. When we could not match a merchant, `merchant` is null and `description_clean` is set to a substring of the original description that our models identified as the relevant entity.\n"}},"security":[{"ApiKeyAuth":[]}],"summary":"Extract merchant","tags":["Merchants"]}},"/api/merchants/groups":{"get":{"description":"Get Merchant groups","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MerchantGroup"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"List merchant groups","tags":["Merchants"]}},"/api/merchants/list":{"get":{"description":"Get a paginated list of merchants with optional name and group_id filtering. Results are ordered by merchant ID for stable pagination.","parameters":[{"description":"Filter merchants by name (full or partial match)","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Filter merchants by group ID","in":"query","name":"group_id","required":false,"schema":{"type":"string"}},{"description":"Number of merchants to return per page","in":"query","name":"limit","required":false,"schema":{"default":50,"maximum":200,"minimum":1,"type":"integer"}},{"description":"Number of merchants to skip","in":"query","name":"offset","required":false,"schema":{"default":0,"minimum":0,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MerchantList"},"type":"array"},"has_more":{"type":"boolean"},"limit":{"type":"integer"},"offset":{"type":"integer"},"total":{"type":"integer"}},"type":"object"}}},"description":"List of merchants with pagination metadata"}},"security":[{"ApiKeyAuth":[]}],"summary":"List merchants","tags":["Merchants"]}},"/api/merchants/search":{"get":{"description":"Search Merchants by name","parameters":[{"description":"Full or partial name, minimum 3 characters","in":"query","name":"name","required":true,"schema":{"type":"string"}},{"description":"If true, only returns priority merchants","in":"query","name":"only_priority","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"merchants":{"items":{"$ref":"#/components/schemas/Merchant"},"type":"array"}},"type":"object"}}},"description":"A list of up to 5 merchants which match the search term, sorted by descending order of their URL rank and the frequency this merchant has been seen historically.\n"}},"security":[{"ApiKeyAuth":[]}],"summary":"Search merchants","tags":["Merchants"]}},"/api/merchants/{heron_id}":{"get":{"description":"Get Merchant by heron_id","parameters":[{"description":"The Merchant `heron_id`","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"merchant":{"$ref":"#/components/schemas/Merchant"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get merchant by ID","tags":["Merchants"]}},"/api/merchants/{merchant_heron_id}/user_merchant_group":{"patch":{"description":"Update the group id for a merchant for the current user","parameters":[{"description":"The Merchant `heron_id`","in":"path","name":"merchant_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"group_id":{"example":"debt.mca_or_rbf","nullable":true,"type":"string"}},"required":["group_id"],"type":"object"}}},"description":"Group ID to assign to the merchant"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMerchantGroupSchema"}}},"description":"OK"},"404":{"description":"Merchant not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Set merchant group override","tags":["Merchants"]}},"/api/oauth/scopes":{"get":{"description":"Unauthenticated because consent happens before sign-in. Names and descriptions only: it describes permissions, it does not grant them.\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"scopes":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"description":"Scope id to consent description"}},"security":[],"summary":"The OAuth scopes this API accepts and the words consent shows for each","tags":["OAuth"],"x-hidden":true}},"/api/policies":{"get":{"description":"Gets all policy definitions set up for a user\n","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PolicySchema"},"type":"array"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get all policy definitions","tags":["Policy"]}},"/api/policies/progress":{"post":{"description":"Triggers the policy progression workflow for a specific end user\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProgressPolicySchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ok":{"example":true,"type":"boolean"}},"type":"object"}}},"description":"Ok"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Progress policies for an end user","tags":["Policy"]}},"/api/policy_value_sets":{"get":{"description":"Keyed by value set, so a check's `attribute_value_set` looks its options up directly. Restricted-industry options come from the selected account's settings. Admins may select an account; customers always read their own.\n","parameters":[{"description":"Account to inspect. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"items":{"$ref":"#/components/schemas/ValueSetOptionSchema"},"type":"array"},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"The options for every finite-valued policy condition","tags":["Policy"],"x-hidden":true}},"/api/policy_version":{"delete":{"description":"Delete the draft. Active and archived versions cannot be deleted.","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"404":{"description":"No draft policy version"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete the draft policy version","tags":["Policy Versions"],"x-hidden":true},"get":{"description":"Return every policy version on your account, newest first, without their policy_definition payloads.\n","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"policy_versions":{"items":{"$ref":"#/components/schemas/PolicyVersionSummarySchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"Not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List policy versions","tags":["Policy Versions"],"x-hidden":true},"post":{"description":"Create a new draft cloned from the current active version's policy_definition, or a blank definition if there is no active version.\n","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionCreateSchema"}}},"required":false},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"Not found"},"422":{"description":"A draft already exists, or policy versions changed concurrently"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a draft policy version","tags":["Policy Versions"],"x-hidden":true},"put":{"description":"Update the draft's policy_definition and/or change_description. Section names must be unique within the definition.\n","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyVersionUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"No draft policy version"},"422":{"content":{"application/json":{"schema":{"properties":{"description":{"type":"string"},"errors":{"items":{"properties":{"code":{"type":"string"},"message":{"type":"string"},"path":{"items":{},"type":"array"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":"The policy definition is invalid. `errors` lists every problem with the path of the field it belongs to, a stable code and a message.\n"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update the draft policy version","tags":["Policy Versions"],"x-hidden":true}},"/api/policy_version/active":{"get":{"description":"Return the currently active policy version, including its policy_definition.","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"No active policy version"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the active policy version","tags":["Policy Versions"],"x-hidden":true}},"/api/policy_version/publish":{"post":{"description":"Make the draft the active version. The previously active version is archived, and author_email becomes the publisher's email.\n","parameters":[{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"No draft policy version"},"422":{"description":"A concurrent publish won the race"}},"security":[{"ApiKeyAuth":[]}],"summary":"Publish the draft policy version","tags":["Policy Versions"],"x-hidden":true}},"/api/policy_version/{version}":{"get":{"description":"Return a single policy version by number, including its policy_definition.","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}},{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"Policy version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a policy version","tags":["Policy Versions"],"x-hidden":true}},"/api/policy_version/{version}/backtest":{"get":{"description":"Every backtest run against this version, newest first, with its result counts.","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"backtests":{"items":{"$ref":"#/components/schemas/BacktestListingSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"Policy version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List a policy version's backtests","tags":["Policy Backtests"],"x-hidden":true},"post":{"description":"Compare a policy version over historical deals and return immediately with the run's id to poll. The baseline defaults to the account's active version. `as_evaluated` compares each deal with its newest stored section evaluations. A run whose workflow could not be started comes back with `status` failed and the reason in `error`.\n","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestCreateSchema"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"backtest":{"$ref":"#/components/schemas/BacktestSchema"}},"type":"object"}}},"description":"The run was recorded; its `status` says whether the workflow started"},"404":{"description":"Policy version not found"},"422":{"description":"No active version to compare against"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start a backtest of a policy version","tags":["Policy Backtests"],"x-hidden":true}},"/api/policy_version/{version}/backtest/count":{"post":{"description":"Return the matching count and the count retained after applying the run limit.","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestSelectionSchema"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestDealCountSchema"}}},"description":"Matching and selected deal counts"},"404":{"description":"Policy version not found"},"422":{"description":"Invalid deal selection"}},"security":[{"ApiKeyAuth":[]}],"summary":"Count deals matching a backtest selection","tags":["Policy Backtests"],"x-hidden":true}},"/api/policy_version/{version}/backtest/{heron_id}":{"get":{"description":"Poll a run. `recorded_deal_count` against `deal_count` is its progress, `result_counts` holds every evaluation_result bucket, and `changed_checks` names the checks behind the deals that moved. A failed run carries the reason in `error`.\n","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}},{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"backtest":{"$ref":"#/components/schemas/BacktestSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"Policy version or backtest not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a backtest's status and summary","tags":["Policy Backtests"],"x-hidden":true}},"/api/policy_version/{version}/backtest/{heron_id}/results":{"get":{"description":"One page of deals, each carrying its evaluation_result, both versions' results, the checks that moved, and the note explaining the classification. Pass `after_id` to fetch rows recorded after that cursor in ascending row-ID order. Cursor-mode `_meta` keeps `total` and `per_page`, sets `next_url` and `prev_url` to null, and omits `page` and `pages`.\n","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}},{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":"integer"}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Return rows recorded after this deal row ID; cannot be combined with page","in":"query","name":"after_id","required":false,"schema":{"minimum":0,"type":"integer"}},{"in":"query","name":"evaluation_result","required":false,"schema":{"type":"string"}},{"in":"query","name":"detail","required":false,"schema":{"enum":["full"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"backtest_deals":{"items":{"$ref":"#/components/schemas/BacktestDealSchema"},"type":"array"}},"type":"object"}}},"description":"OK"},"404":{"description":"Policy version or backtest not found"},"422":{"description":"Invalid filters or after_id combined with page"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a backtest's per-deal results","tags":["Policy Backtests"],"x-hidden":true}},"/api/policy_version/{version}/rollback":{"post":{"description":"Clone an archived version's policy_definition into a new draft. Pass publish=true to publish the new version immediately.\n","parameters":[{"in":"path","name":"version","required":true,"schema":{"type":"integer"}},{"in":"query","name":"publish","required":false,"schema":{"type":"boolean"}},{"description":"Account to act on. Honoured only for admins.","in":"query","name":"user_id","required":false,"schema":{"type":"integer"}}],"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"policy_version":{"$ref":"#/components/schemas/PolicyVersionSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"Policy version not found"},"422":{"description":"Version is not archived, a draft already exists, or a concurrent publish won the race"}},"security":[{"ApiKeyAuth":[]}],"summary":"Roll back to an archived policy version","tags":["Policy Versions"],"x-hidden":true}},"/api/positions/{position_heron_id}/transactions":{"get":{"description":"Returns investment and repayment transactions for a specific position","operationId":"getPositionTransactions","parameters":[{"description":"The position heron ID","in":"path","name":"position_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionTransactions"}}},"description":"Position transactions retrieved successfully"},"404":{"description":"Position not found"}},"summary":"Get transactions for a specific position","tags":["Positions"]}},"/api/rules/":{"get":{"description":"Read all available rules","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"rules":{"items":{"$ref":"#/components/schemas/Rule"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get rules","tags":["Rules"]},"post":{"description":"Create a new rule to send a 'end_user.review_required' webhook after processing if rule condition evaluates to true\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"rule":{"$ref":"#/components/schemas/Rule"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"rule":{"$ref":"#/components/schemas/Rule"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a single rule","tags":["Rules"]}},"/api/rules/metrics":{"get":{"description":"Read all available metrics to define rules on","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MetricDefinitionSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get metrics","tags":["Rules"]}},"/api/rules/{heron_id}":{"delete":{"description":"Delete a rule\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"content":{"application/json":{"schema":{"properties":{"heron_id":{"type":"string"}},"type":"object"}}},"description":"Deleted"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete rule by heron_id","tags":["Rules"]},"put":{"description":"Update a rule\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"rule":{"$ref":"#/components/schemas/RuleUpdateSchema"}},"type":"object"}}},"description":"Rule","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"rule":{"$ref":"#/components/schemas/Rule"}},"type":"object"}}},"description":"Updated"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update rule by heron_id","tags":["Rules"]}},"/api/submission_parsers/{end_user_heron_id}":{"get":{"parameters":[{"description":"The heron_id of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ParsedEndUserSubmissionSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get parsed submissions for an End User","tags":["ParsedEndUserSubmission"]}},"/api/tags":{"get":{"description":"Return every tag on your account, excluding deleted ones.","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tags":{"items":{"$ref":"#/components/schemas/TagSchema"},"type":"array"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"List tags","tags":["Tags"]},"post":{"description":"Create a tag. Names are normalized to lowercase. They must contain 1-140 alphanumeric characters plus _ - : and are unique to your account (case-insensitive).\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"tag":{"$ref":"#/components/schemas/TagSchema"}},"type":"object"}}},"description":"OK"},"400":{"description":"Invalid request body"},"422":{"description":"Tag name already exists or is reserved for a system-managed tag"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a tag","tags":["Tags"]}},"/api/tags/{heron_id}":{"delete":{"description":"Delete a tag. It is removed from everything it is currently applied to and no longer appears in tag lists. Where your access is restricted by tag, you can only delete tags you hold. Where access is restricted by tag, a tag applied to any end user cannot be deleted: remove it from them first, since deleting it revokes access for everyone holding it.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"404":{"description":"Tag not found"},"422":{"description":"System-managed tag, outside your access scope, or applied to end users"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a tag","tags":["Tags"]},"get":{"description":"Return a single tag by its heron_id. Deleted tags return 404.","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tag":{"$ref":"#/components/schemas/TagSchema"}},"type":"object"}}},"description":"OK"},"404":{"description":"Tag not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a tag","tags":["Tags"]},"patch":{"description":"Update a tag's name, description, or color. Only the fields you send are changed; send null to clear the description or color. Where your access is restricted by tag, you can only update tags you hold.\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagPatchSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"tag":{"$ref":"#/components/schemas/TagSchema"}},"type":"object"}}},"description":"OK"},"400":{"description":"Invalid request body"},"404":{"description":"Tag not found"},"422":{"description":"Tag name already exists, is system-managed, or is outside your access scope"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a tag","tags":["Tags"]}},"/api/transactions":{"delete":{"callbacks":{"onData":{"$yourWebhookUrl":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionDeleteWebhook","type":"object"}}},"description":"Webhook payload with transactions"},"responses":{"200":{"description":"Your webhook implementation should return this HTTP status code\nif the data was received successfully."}}}}}},"description":"Please provide at least one of the following parameters: heron_ids, heron_id, request_id or end_user_id.\n","parameters":[{"description":"(legacy) Heron ID of transaction to be deleted","in":"query","name":"heron_id","required":false,"schema":{"example":"txn_kMnaDaRV8b7QTuTT8R45w6","nullable":true,"type":"string"}},{"description":"Heron IDs of transactions to be deleted","explode":true,"in":"query","name":"heron_ids","required":false,"schema":{"default":[],"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Reference IDs of transactions to be deleted","explode":true,"in":"query","name":"reference_ids","required":false,"schema":{"default":[],"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Request ID of transactions to be deleted","in":"query","name":"request_id","required":false,"schema":{"nullable":true,"type":"string"}},{"description":"end_user_id of transactions to be deleted","in":"query","name":"end_user_id","required":false,"schema":{"nullable":true,"type":"string"}},{"description":"account_id of transactions to be deleted","in":"query","name":"account_id","required":false,"schema":{"nullable":true,"type":"string"}},{"description":"if true, deletes only transactions that are marked as duplicates","in":"query","name":"only_duplicates","required":false,"schema":{"nullable":true,"type":"boolean"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete transactions","tags":["Transactions"]},"get":{"description":"Get transactions. At least `end_user_id`, `heron_id` or `request_id` must be provided.","parameters":[{"description":"Deprecated; see created_date_ or timestamp_date_","in":"query","name":"from_date","required":false,"schema":{"format":"date","type":"string"}},{"description":"Deprecated; see created_date_ or timestamp_date_","in":"query","name":"to_date","required":false,"schema":{"format":"date","type":"string"}},{"description":"Filter by earliest transaction upload date - when Heron received the transaction","in":"query","name":"created_date_min","required":false,"schema":{"example":"2020-04-27","format":"date","type":"string"}},{"description":"Filter by latest transaction upload date - when Heron received the transaction","in":"query","name":"created_date_max","required":false,"schema":{"example":"2020-04-27","format":"date","type":"string"}},{"description":"Filter for transactions whose values were last updated in Heron systems after the specified input value","in":"query","name":"last_updated_min","required":false,"schema":{"example":"2026-10-06T22:12:43.293003","format":"date-time","type":"string"}},{"description":"Filter for transactions whose values were last updated in Heron systems before the specified input value","in":"query","name":"last_updated_max","required":false,"schema":{"example":"2026-10-06T22:12:43.293016","format":"date-time","type":"string"}},{"description":"Filter by earliest transaction timestamp","in":"query","name":"timestamp_date_min","required":false,"schema":{"example":"2020-04-27","format":"date","type":"string"}},{"description":"Filter by latest transaction timestamp","in":"query","name":"timestamp_date_max","required":false,"schema":{"example":"2020-04-27","format":"date","type":"string"}},{"description":"Filter by the heron_id of the category that the transaction is annotated with","explode":true,"in":"query","name":"category_heron_id","required":false,"schema":{"default":[],"example":"ctg_NtfYehXUDtYgrPo5QXVCtS","items":{"type":"string"},"nullable":true,"type":"array"},"style":"form"},{"description":"Request-Id header returned in the response of POST transactions. Sending this parameter will return all transactions sent in a particular POST request, including any duplicates.","in":"query","name":"request_id","required":false,"schema":{"type":"string"}},{"description":"Reference Id of transaction","in":"query","name":"reference_id","required":false,"schema":{"type":"string"}},{"description":"Heron generated Id of transaction","in":"query","name":"heron_id","required":false,"schema":{"example":"txn_36i9UmKAKWPQKV9w86XYKY","type":"string"}},{"description":"Filter to a specific set of transactions by Heron ID, e.g. the transactions an attribute cites","explode":true,"in":"query","name":"heron_ids","required":false,"schema":{"default":[],"items":{"type":"string"},"maxItems":100,"type":"array"},"style":"form"},{"description":"End user id of transaction","in":"query","name":"end_user_id","required":false,"schema":{"type":"string"}},{"description":"Whether or not to include duplicate transactions in the response. Defaults to false unless request_id is provided, in which case it defaults to true.","in":"query","name":"include_duplicates","required":false,"schema":{"type":"boolean"}},{"description":"Filter by transaction code","in":"query","name":"transaction_code","required":false,"schema":{"type":"string"}},{"description":"Filter by whether the transaction is recurring","in":"query","name":"is_recurring","required":false,"schema":{"type":"boolean"}},{"description":"Filter by the recorded payment-processing flag. False includes transactions not yet evaluated.","in":"query","name":"is_payment_processing","required":false,"schema":{"type":"boolean"}},{"description":"Filter by whether the transaction has a matching transaction","in":"query","name":"has_matching_transaction","required":false,"schema":{"type":"boolean"}},{"description":"Filter by keyword match on transaction description; case insensitive","in":"query","name":"description_keyword","required":false,"schema":{"type":"string"}},{"description":"Filter by keyword match on transaction counterparty; case insensitive","in":"query","name":"counterparty_keyword","required":false,"schema":{"type":"string"}},{"description":"Filter by regex matching transaction description","in":"query","name":"description_regex","required":false,"schema":{"type":"string"}},{"description":"Filter by minimum amount of transaction","in":"query","name":"min_amount","required":false,"schema":{"type":"number"}},{"description":"Filter by maximum amount of transaction","in":"query","name":"max_amount","required":false,"schema":{"type":"number"}},{"description":"Filter by minimum running balance","in":"query","name":"min_balance","required":false,"schema":{"type":"number"}},{"description":"Filter by maximum running balance","in":"query","name":"max_balance","required":false,"schema":{"type":"number"}},{"description":"Filter by minimum confidence of annotation associated with transaction","in":"query","name":"confidence_min","required":false,"schema":{"maximum":1.0,"minimum":0.0,"type":"number"}},{"description":"Filter by maximum confidence of annotation associated with transaction","in":"query","name":"confidence_max","required":false,"schema":{"maximum":1.0,"minimum":0.0,"type":"number"}},{"description":"Filter by merchant group id","in":"query","name":"merchant_group_id","required":false,"schema":{"type":"string"}},{"description":"Filter by merchant heron id","in":"query","name":"merchant_heron_id","required":false,"schema":{"type":"string"}},{"description":"Filter by data source Heron ID","in":"query","name":"data_source_heron_id","required":false,"schema":{"type":"string"}},{"description":"Filter by keyword match on merchant name; case insensitive","in":"query","name":"merchant_name","required":false,"schema":{"type":"string"}},{"description":"Filter by whether the transaction has a merchant entity associated with it","in":"query","name":"has_merchant","required":false,"schema":{"nullable":true,"type":"boolean"}},{"description":"What to order transactions by","in":"query","name":"order_by","required":false,"schema":{"default":"id_asc","enum":["amount_asc","amount_desc","abs_amount_asc","abs_amount_desc","description_asc","description_desc","timestamp_asc","timestamp_desc","id_asc","id_desc","confidence_asc","confidence_desc","created_asc","created_desc","balance_asc","balance_desc"],"type":"string"}},{"description":"Page of transaction to return","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Number of transactions to return per page","in":"query","name":"limit","required":false,"schema":{"default":1000,"maximum":10000,"minimum":1,"type":"integer"}},{"description":"Account ids to include. If not provided, all accounts are included","explode":true,"in":"query","name":"account_ids","required":false,"schema":{"items":{"example":"1234","type":"string"},"nullable":true,"type":"array"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"$ref":"#/components/schemas/Pagination"},"_summary":{"properties":{"returned_transactions":{"type":"integer"},"transactions":{"type":"integer"}},"type":"object"},"transactions":{"items":{"$ref":"#/components/schemas/TransactionGetOutput"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"ApiKeyAuth":[]}],"tags":["Transactions"]},"post":{"description":"Enrich and categorize transactions and consume them in a sync response. For business lending and underwriting, please use \"Create end user transactions\" instead. Please send a maximum of 249 transactions per request.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsPostSyncSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_summary":{"properties":{"request_id":{"description":"Unique UUID per request","type":"string"}},"type":"object"},"transactions":{"description":"only returned for sync enrichment requests","items":{"$ref":"#/components/schemas/TransactionPostOutput"},"type":"array"}},"type":"object"}}},"description":"OK"},"413":{"content":{"application/json":{"schema":{"properties":{"code":{"example":413,"type":"integer"},"description":{"example":"Transaction batch size exceeds max of 2500","type":"string"},"name":{"example":"Payload Too Large","type":"string"}},"type":"object"}}},"description":"Payload Too Large"}},"security":[{"ApiKeyAuth":[]}],"summary":"Enrich transactions (sync)","tags":["Transactions"]}},"/api/transactions/{heron_id}/feedback":{"put":{"description":"Provide feedback on a Transaction's Categories and Merchants","parameters":[{"description":"Transaction `heron_id`","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"transaction":{"$ref":"#/components/schemas/TransactionFeedbackSchema"}},"type":"object"}}},"description":"A partial Transaction object with the suggested Category and/or Merchant. If you provide a `heron_id` for Category or Merchant, you don't need to provide other fields. If you don't know the Merchant `heron_id` nor name, you can just send the `is_correct` boolean. If `heron_id` is provided, we disregard `name` and `label`. If `is_correct` is set to true, we disregard all other Merchant fields.\n","required":true},"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create category, merchant feedback","tags":["EnrichmentFeedback"]}},"/api/transactions/{reference_id_or_heron_id}":{"get":{"description":"Get enriched transaction","parameters":[{"in":"path","name":"reference_id_or_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"transaction_enriched":{"$ref":"#/components/schemas/TransactionEnriched"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"ApiKeyAuth":[]}],"tags":["EnrichedTransactions"]}},"/api/user_merchant_groups":{"get":{"parameters":[{"description":"The group_id of the merchant","in":"query","name":"group_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserMerchantGroupsSchema"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"This endpoint returns merchant groups categorized as pending, custom, or rejected.","tags":["UserMerchantGroups"]}},"/api/users/company_overview_layout":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CompanyOverviewLayoutSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get user's company overview layout","tags":["Users"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CompanyOverviewLayoutSchema"},"type":"array"}}},"description":"The new company overview layout","required":true},"responses":{"204":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Save user's company overview layout","tags":["Users"]}},"/api/users/current":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"member":{"description":"The logged-in member's customer roles in this environment, from the session.","properties":{"roles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"user":{"$ref":"#/components/schemas/User"}},"type":"object"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the current user","tags":["Users"],"x-hidden":true}},"/api/users/current/settings":{"put":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserModifiableSettings"}}},"description":"The new settings","required":true},"responses":{"204":{"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Save user's settings","tags":["Users"]}},"/api/users/file_class_groups":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get file class groups enabled for a User","tags":["FileClass"]}},"/api/users/file_classes":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FileClassSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get current file classes used in classification","tags":["FileClass"]}},"/api/users/file_classes/{file_class_name}":{"delete":{"parameters":[{"in":"path","name":"file_class_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FileClassSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove a FileClass from Classification for a User","tags":["FileClass"]},"post":{"parameters":[{"in":"path","name":"file_class_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FileClassSchema"},"type":"array"}}},"description":"OK"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add a FileClass to Classify for a User","tags":["FileClass"]}},"/api/users/{user_id}/workflow_owners":{"put":{"parameters":[{"description":"The ID of the user whose workflow owners to update","in":"path","name":"user_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"group_slack_name":{"items":{"type":"string"},"type":"array"},"user_email":{"items":{"format":"email","type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"owners":{"properties":{"group_slack_name":{"items":{"type":"string"},"type":"array"},"user_email":{"items":{"format":"email","type":"string"},"type":"array"}},"type":"object"}},"type":"object"}}},"description":"Workflow owners updated successfully"},"404":{"description":"User not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update workflow owners for a user (admin only)","tags":["Users"],"x-hidden":true}},"/api/watermarks/logo":{"get":{"description":"Retrieve the logo file for the current user as raw bytes.","responses":{"200":{"content":{"image/*":{"schema":{"format":"binary","type":"string"}}},"description":"Logo file retrieved successfully"},"401":{"description":"Unauthorized"},"404":{"description":"Logo not found for user"}},"summary":"Retrieve user logo","tags":["Watermarks"]},"post":{"description":"Upload a logo file for the current user. The file is validated for security and stored in GCS.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogoUploadSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogoFileSchema"}}},"description":"Logo uploaded successfully"},"400":{"description":"Invalid file format or content"},"401":{"description":"Unauthorized"},"413":{"description":"File too large"}},"summary":"Upload user logo","tags":["Watermarks"]}},"/api/webhooks":{"get":{"description":"Get webhook\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"webhooks":{"items":{"$ref":"#/components/schemas/WebhookSchema"},"type":"array"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get webhooks","tags":["Webhooks"]},"post":{"description":"Create a webhook\n","requestBody":{"content":{"application/json":{"schema":{"properties":{"webhook":{"$ref":"#/components/schemas/WebhookSchema"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"webhook":{"$ref":"#/components/schemas/WebhookSchema"}},"type":"object"}}},"description":"Created"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a webhook","tags":["Webhooks"]}},"/api/webhooks/deliveries":{"get":{"description":"Lists sent and failed webhook attempts from the last 7 days. HTTP status 0 marks a connection error.","parameters":[{"in":"query","name":"limit","schema":{"default":25,"maximum":50,"minimum":10,"type":"integer"}},{"in":"query","name":"cursor","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"enum":["sent","failed"],"type":"string"}},{"in":"query","name":"end_user_heron_id","schema":{"type":"string"}},{"description":"Older values are clamped to the 7-day history window.","in":"query","name":"interval_start","schema":{"format":"date-time","type":"string"}},{"description":"Must fall within the last 7 days.","in":"query","name":"interval_end","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"_meta":{"properties":{"next_cursor":{"nullable":true,"type":"string"},"per_page":{"type":"integer"},"total":{"description":"Matching deliveries, capped at 10,000. Counted on the first page only; null when a cursor is passed.","nullable":true,"type":"integer"},"total_capped":{"description":"True when total hit the 10,000 cap. Null when a cursor is passed.","nullable":true,"type":"boolean"}},"type":"object"},"webhook_deliveries":{"items":{"$ref":"#/components/schemas/WebhookDeliverySchema"},"type":"array"}},"type":"object"}}},"description":"Webhook delivery attempts"},"422":{"description":"Invalid filters or cursor"}},"security":[{"ApiKeyAuth":[]}],"summary":"List webhook delivery attempts","tags":["Webhooks"]}},"/api/webhooks/deliveries/{heron_id}":{"get":{"description":"Returns one sent or failed webhook attempt from the last 7 days, using the heron_id from the delivery list. payload is the JSON body sent and is only stored for failed attempts; it is null for sent ones. response_text is not truncated.","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryDetailSchema"}}},"description":"Webhook delivery attempt"},"404":{"description":"Delivery not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a webhook delivery attempt","tags":["Webhooks"]}},"/api/webhooks/topics":{"get":{"description":"Get webhook topics\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"topics":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get webhook topics","tags":["Webhooks"]}},"/api/webhooks/{heron_id}":{"delete":{"description":"Delete a webhook by its heron_id. The webhook must belong to the authenticated user.\n","parameters":[{"description":"The heron_id of the webhook to delete","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Webhook successfully deleted. No response body."},"404":{"content":{"application/json":{"schema":{"properties":{"description":{"example":"webhook with heron_id {heron_id} not found","type":"string"}},"type":"object"}}},"description":"Webhook not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a webhook","tags":["Webhooks"]},"put":{"description":"Update a webhook\n","parameters":[{"in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"webhook":{"$ref":"#/components/schemas/WebhookUpdateSchema"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"webhook":{"$ref":"#/components/schemas/WebhookSchema"}},"type":"object"}}},"description":"Ok"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a webhook","tags":["Webhooks"]}},"/api/workflow/executions/status/{workflow_execution_heron_id}":{"get":{"description":"Retrieve all WorkflowNodeExecution records for a given WorkflowExecution heron_id","parameters":[{"description":"The heron ID of the workflow execution","in":"path","name":"workflow_execution_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowExecutionStatusSchema"}}},"description":"Workflow execution status"},"404":{"description":"Workflow execution not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the status of a workflow execution (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/node/execute":{"post":{"description":"Execute an individual node from a workflow definition for debugging/testing purposes.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleNodeExecuteRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleNodeExecuteResponseSchema"}}},"description":"Single node execution started"},"400":{"description":"Invalid request or missing node input references"},"404":{"description":"Workflow, end user, or node not found"}},"security":[{"HeronAdminAuth":[]}],"summary":"Execute a single workflow node in isolation","tags":["Workflows"],"x-hidden":true}},"/api/workflow/node/executions/{workflow_execution_heron_id}":{"get":{"description":"Returns the current status and result (if available) of a single node execution.","parameters":[{"description":"The heron ID of the workflow execution","in":"path","name":"workflow_execution_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Single node execution status"},"404":{"description":"Workflow execution not found or not a single-node execution"}},"security":[{"HeronAdminAuth":[]}],"summary":"Get single node execution status and result","tags":["Workflows"],"x-hidden":true}},"/api/workflow/nodes":{"get":{"description":"Get metadata for all nodes that can be used in JSONWorkflows. Requires workflow_heron_id to get user-specific schemas.","parameters":[{"description":"The heron ID of a workflow to customize node schemas for that workflow's user","in":"query","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NodeMetadataSchema"},"type":"array"}}},"description":"List of available nodes with their metadata"},"400":{"description":"Missing workflow_heron_id parameter"},"404":{"description":"Workflow not found"}},"summary":"List all available workflow nodes","tags":["Workflows"],"x-hidden":true}},"/api/workflow/start":{"post":{"description":"Start a workflow by heron_id for an end user, or start the default workflow if no workflow_heron_id provided","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartResponseSchema"}}},"description":"Workflow started successfully"},"404":{"description":"End user or workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start a workflow for an end user","tags":["Workflows"],"x-hidden":true}},"/api/workflow/start_by_heron_id":{"post":{"description":"Start a workflow by Heron ID for an end user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartByHeronIdRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartResponseSchema"}}},"description":"Workflow started successfully"},"400":{"description":"Trigger ID or payload is invalid"},"404":{"description":"End user or workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start a workflow by Heron ID for an end user","tags":["Workflows"]}},"/api/workflow/start_by_name":{"post":{"description":"Start a workflow by name for an end user","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartByNameRequestSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStartResponseSchema"}}},"description":"Workflow started successfully"},"400":{"description":"Trigger ID or payload is invalid"},"404":{"description":"End user or workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start a workflow by name for an end user","tags":["Workflows"]}},"/api/workflow/user/workflows":{"get":{"description":"Returns all workflows belonging to the authenticated user.","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserWorkflowSchema"},"type":"array"}}},"description":"List of workflows"}},"security":[{"ApiKeyAuth":[]}],"summary":"List workflows for the current user","tags":["Workflows"]}},"/api/workflow/users/{user_id}/workflows":{"get":{"parameters":[{"description":"The ID of the user","in":"path","name":"user_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkflowSchema"},"type":"array"}}},"description":"List of user workflows"},"404":{"description":"User not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"List all workflows for a user (admin only)","tags":["Workflows"],"x-hidden":true},"post":{"parameters":[{"description":"The ID of the user","in":"path","name":"user_id","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowCreateSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSchema"}}},"description":"Workflow created successfully"},"400":{"description":"Invalid workflow data"},"404":{"description":"User not found"},"409":{"description":"Workflow with this name already exists"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create a new workflow for a user (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/users/{user_id}/workflows/{workflow_heron_id}":{"get":{"parameters":[{"description":"The ID of the user","in":"path","name":"user_id","required":true,"schema":{"type":"integer"}},{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSchema"}}},"description":"Workflow found"},"404":{"description":"User or workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a specific workflow for a user (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/workflows":{"get":{"description":"Get all workflows ordered by most recently edited (based on latest version's last_updated)","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkflowSummarySchema"},"type":"array"}}},"description":"List of all workflows"}},"security":[{"ApiKeyAuth":[]}],"summary":"List all workflows across all users (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{heron_id}":{"delete":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSchema"}}},"description":"Workflow deleted successfully"},"404":{"description":"Workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a workflow by heron ID (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}":{"get":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSchema"}}},"description":"Workflow found"},"404":{"description":"Workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get a workflow by heron ID (admin only)","tags":["Workflows"],"x-hidden":true},"patch":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowUpdateSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSchema"}}},"description":"Workflow updated successfully"},"400":{"description":"Invalid workflow data"},"404":{"description":"Workflow not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a workflow by heron ID (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/executions":{"get":{"description":"Retrieve all WorkflowExecution records for a given workflow heron_id, ordered by most recent","parameters":[{"description":"The heron ID of the workflow (e.g., wfl_ZpWkCHwGAKkE7By2gdo5re)","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkflowExecutionSchema"},"type":"array"}}},"description":"List of workflow executions"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get recent workflow executions for a workflow (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/executions/end_user/{end_user_heron_id}":{"get":{"description":"Retrieve all WorkflowNodeExecution records for a given WorkflowExecution heron_id","parameters":[{"description":"The heron ID of the end user","in":"path","name":"end_user_heron_id","required":true,"schema":{"type":"string"}},{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkflowExecutionSchema"},"type":"array"}}},"description":"Workflow execution status"},"404":{"description":"End user not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get the status of a workflow execution (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/node/{node_id}/executions":{"get":{"description":"Returns all single-node executions for a given node_id within a workflow.","parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The node ID within the workflow definition","in":"path","name":"node_id","required":true,"schema":{"type":"string"}},{"description":"Optional heron ID of the end user to filter by","in":"query","name":"end_user_heron_id","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SingleNodeExecutionListItemSchema"},"type":"array"}}},"description":"List of single-node executions"},"404":{"description":"Workflow not found"}},"security":[{"HeronAdminAuth":[]}],"summary":"List all single-node executions for a node","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}":{"delete":{"description":"Deletes the specified version. The version must be a draft and the latest version.","parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to delete","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Version deleted successfully"},"400":{"description":"Version is not a draft or not the latest version"},"404":{"description":"Workflow or version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete a draft workflow version by heron ID (admin only)","tags":["Workflows"],"x-hidden":true},"get":{"description":"Get full details for a specific version of a workflow, including definition and display config","parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to retrieve","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Workflow version details"},"404":{"description":"Workflow or version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get workflow version details (admin only)","tags":["Workflows"],"x-hidden":true},"patch":{"description":"Update fields on an existing draft version. Only non-null fields are updated.","parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to update","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowUpdateVersionSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Draft version updated successfully"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update a draft workflow version in-place (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}/approve":{"post":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to approve","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowApproveSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Workflow version approved"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or in-review version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Approve a workflow version in review (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}/copy_to_draft":{"post":{"description":"Create a new draft version by copying workflow_definition and display_config from the specified version.","parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to copy from","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowCopyToDraftSchema"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"New draft version created successfully"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Copy a version to a new draft (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}/publish":{"post":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to publish","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowPublishSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Workflow version published"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or draft version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Publish a workflow draft directly (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}/submit_for_review":{"post":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to submit for review","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowSubmitForReviewSchema"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Workflow version submitted for review"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or draft version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Submit a workflow draft for review (admin only)","tags":["Workflows"],"x-hidden":true}},"/api/workflow/{workflow_heron_id}/versions/{version_number}/withdraw":{"post":{"parameters":[{"description":"The heron ID of the workflow","in":"path","name":"workflow_heron_id","required":true,"schema":{"type":"string"}},{"description":"The version number to withdraw","in":"path","name":"version_number","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionSchema"}}},"description":"Workflow version withdrawn to draft"},"400":{"description":"Invalid request"},"404":{"description":"Workflow or in-review version not found"}},"security":[{"ApiKeyAuth":[]}],"summary":"Withdraw a workflow version from review (admin only)","tags":["Workflows"],"x-hidden":true}}},"security":[{"ApiKeyAuth":["key_XXX"]}],"servers":[{"description":"Production","url":"https://app.herondata.io"}]}
