if/then constructs to express
conditional requirements. Not all sections and fields apply to every
application. The schema defines what is required based on the application’s
configuration.
Nature of business
The primary conditional driver is Nature of Business (NOB). This classification is set during application creation and determines which sections and fields appear. For example, acryptoExchange application may require
different documentation than a trust application.
How conditionals work
TheallOf array in the schema contains if/then blocks:
- The
ifclause checks the value of a parent field (most commonlynature_of_business). - When the condition is met, the
thenclause adds fields to therequiredarray, making them mandatory.
The following example shows an exact string match condition:
natureOfBusiness is cryptoExchange, the schema
requires the cryptoExchangeLicenseNumber field. The same if/then pattern
applies to all condition types in the preceding table. Substitute the
appropriate JSON Schema keyword (enum for OR lists, contains for array
membership, not for negation) in the if block.
Conditional side effects
After saving a section that contains a conditional parent field (for example,beneficialOwnersExist),
other sections may activate or deactivate. This includes
array sections,
which can be conditionally activated. The API signals this through two
mechanisms:
sectionsChangedflag: Returned in every save response. Whentrue, the section list has changed and you should re-fetch sections.- Updated
sectionsarray: The response includes the current status of all active sections, not just the one you saved.
Mutually exclusive groups
Some conditionals create mutually exclusive branches. For example, different variants ofbasic_business_info may exist for different NOB values. Only one
branch’s fields are required at a time. The schema enforces this automatically.
Design considerations
- Integrations that skip re-fetching after a
sectionsChangedresponse risk submitting incomplete applications. - Client-side validation against the schema (
minLength,pattern,enum) before submitting reduces round-trips and improves the user experience. - Use the
?resolved=truequery parameter on the schema endpoint to retrieve a pruned view containing only the fields that are currently active based on previously submitted data. This removes the need to evaluate conditional rules locally.