Discover applicable programs
Pass an item's hsCode and shipToCountry to find which programs apply. The
result is a paginated connection of ComplianceRequirement nodes, each pointing
at the ComplianceProgram it triggers.
query ComplianceRequirements($filter: ComplianceRequirementFilter!) { complianceRequirements(filter: $filter, first: 10) { totalCount pageInfo { hasNextPage endCursor } edges { cursor node { id hsCode shipToCountry shipFromCountry program { id code name programType authority jurisdiction status strictness currentVersion { id version status } } } } }}A shipFromCountry of null on a requirement means the program applies
regardless of origin. When you supply shipFromCountry in the filter, both
origin-specific rows and "any origin" rows are matched.
Filtering and pagination
complianceRequirements accepts a ComplianceRequirementFilter plus standard
cursor pagination arguments (first / after for forward paging, last /
before for backward paging).
| Filter field↕ | Type↕ | Notes↕ |
|---|---|---|
hsCode | String | Exact HS code match. Mutually exclusive with hsCodePrefix. |
hsCodePrefix | String | Prefix match (digits and dots only, max 12 chars). Mutually exclusive with hsCode. |
shipToCountry | CountryCode | Destination country. |
shipFromCountry | CountryCode | Origin country. Rows with a null origin ("any origin") also match. |
programTypes | [ComplianceProgramType!] | Match only these program types. Empty list = no filter. |
For example, list every PGA requirement for cosmetics chapter 3304:
query PgaRequirements($filter: ComplianceRequirementFilter!) { complianceRequirements(filter: $filter, first: 25) { totalCount edges { node { hsCode shipToCountry program { code name } } } }}Read a program's questionnaire
Each ComplianceProgram exposes its currentVersion — the ACTIVE questionnaire
— and that version's questions in display order. Every question declares its
answerType, whether it is required, its options (for select types), and an
optional displayCondition that branches the questionnaire. Read this structure
to render your own UI or to understand exactly what an importer must provide.
query QuestionnaireStructure($filter: ComplianceRequirementFilter!) { complianceRequirements(filter: $filter, first: 1) { edges { node { program { code name currentVersion { version status questions { code prompt helpText answerType required section displayOrder effectTarget effectKey optionsSource options { value label displayOrder } displayCondition { questionCode operator values } } } } } } }}In the example above, contains_color_additives is only shown when
intended_use equals cosmetic — that is the displayCondition at work. For
the full branching model, dynamic (optionsSource) options, and what
effectTarget / effectKey do at finalization, see
How it works.
Next steps
- Complete a questionnaire - infer, answer, and finalize the questionnaires you discovered here.
- How it works - branching, effect keys, inference, and dynamic options.
Check compliance requirements
Discover which compliance programs apply to an item, and read the questionnaire you will need to answer.
GraphQL
The
complianceRequirementsquery is the entry point to Zonos Clarify. Given an item's HS code and route, it returns the compliance programs that are triggered, and lets you traverse each program's full questionnaire structure — questions, options, and branching logic. Use it to decide whether a shipment needs compliance answers and to render your own questionnaire UI.This query requires the
COMPLIANCE_READscope. See OAuth for authenticating API requests.