KYCCentral.Assessment (KYC Central v0.9.0)

Copy Markdown View Source

The result of running a rule set against one company.

Most endpoints in this API proxy or reshape upstream registry data and are returned as plain maps, so new upstream fields are never silently dropped. The assessment is the one response with a contract of its own, so it is modelled here — with the untouched payload kept on :raw.

The *_summary fields hold the evidence each rule was evaluated against; each mirrors the corresponding standalone endpoint, so :officers_summary and KYCCentral.Companies.officers/3 describe the same data.

Summary

Functions

True when no rule in the set raised a flag.

The flag with code, or nil when it was not raised.

Flags matching any of severities.

Flags at severity or more severe.

Build an assessment from a decoded /v1/kyc/assess body.

True when a flag with code was raised, e.g. "ACCOUNTS_OVERDUE".

True when some data was unavailable, so the result is incomplete.

Numeric severity, ascending. Useful for sorting.

Rule results matching status.

Types

t()

@type t() :: %KYCCentral.Assessment{
  adverse_media_summary: term(),
  charges_summary: term(),
  checked_at: String.t(),
  company_exemptions_summary: term(),
  company_name: String.t(),
  company_number: String.t(),
  confirmation_statements_summary: term(),
  corporate_disqualifications_summary: term(),
  cs01_document_summary: term(),
  data_fetched_at: String.t(),
  disqualifications_summary: term(),
  failed_rules: [String.t()],
  fca_summary: term(),
  filing_summary: term(),
  flags: [KYCCentral.RiskFlag.t()],
  gleif_summary: term(),
  individual_insolvency_summary: term(),
  insolvency_summary: term(),
  officer_appointments_summary: term(),
  officers_summary: term(),
  offshore_leaks_summary: term(),
  pending_extractions: [String.t()],
  profile: term(),
  psc_chain_depth: non_neg_integer(),
  psc_statements_summary: term(),
  psc_summary: term(),
  raw: map(),
  risk_level: KYCCentral.RiskFlag.severity(),
  rule_results: [KYCCentral.RuleResult.t()],
  sanctions_summary: term(),
  statement_of_capital_summary: term(),
  timed_out_services: [String.t()],
  vat_summary: term()
}

Functions

clear?(assessment)

@spec clear?(t()) :: boolean()

True when no rule in the set raised a flag.

flag(assessment, code)

@spec flag(t(), String.t()) :: KYCCentral.RiskFlag.t() | nil

The flag with code, or nil when it was not raised.

flags_at(assessment, severities)

@spec flags_at(t(), [KYCCentral.RiskFlag.severity()]) :: [KYCCentral.RiskFlag.t()]

Flags matching any of severities.

flags_at_or_above(assessment, severity)

@spec flags_at_or_above(t(), KYCCentral.RiskFlag.severity()) :: [
  KYCCentral.RiskFlag.t()
]

Flags at severity or more severe.

from_map(data)

@spec from_map(map()) :: t()

Build an assessment from a decoded /v1/kyc/assess body.

has_flag?(assessment, code)

@spec has_flag?(t(), String.t()) :: boolean()

True when a flag with code was raised, e.g. "ACCOUNTS_OVERDUE".

partial?(assessment)

@spec partial?(t()) :: boolean()

True when some data was unavailable, so the result is incomplete.

A partial assessment is still usable, but an absent flag is not proof of a clean result — treat it as "not yet screened" rather than "clear".

rank(severity)

@spec rank(KYCCentral.RiskFlag.severity()) :: 0..3

Numeric severity, ascending. Useful for sorting.

rules_with_status(assessment, status)

@spec rules_with_status(t(), KYCCentral.RuleResult.status()) :: [
  KYCCentral.RuleResult.t()
]

Rule results matching status.