Provider-agnostic up-front dependent-options table. One DependentOptionSet per distinct optionsSource among this line's questions, covering every reachable option combination scoped to this line's item (HTS code). Clients use this to derive visible options for provider-backed questions locally, without additional server calls.
The program this line answers, so a client can name it and tell what kind it is (programType) without a second read. Archived programs resolve: a session outlives its program, and the superseded measures are the ones worth naming. Null only when the program row is unreadable.
ALL questions for this line's questionnaire version in display order, each with its latest answer. Display conditions are NOT evaluated server-side here — deliver the full tree so the client can evaluate them locally (one-shot delivery, zero subsequent round-trips for conditional branching). requirements filters it as on visibleQuestions.
All currently-visible questions in display order, each with its latest answer merged (null when unanswered). Display conditions are evaluated server-side against this line's answers — the render-ready review list; clients never re-implement the evaluator. requirements keeps only questions at those levels (null/empty = every level). It narrows delivery, not the line: completion still blocks on REQUIRED alone. An unanswered question that a kept one's display condition gates on is kept too, or the gated question could never become visible.
Fields
answerScopes
[ResponseTargetType!]!
Required
[ITEM]alone is the per-shipment half of a fanned-out questionnaire —targetTypedoes not imply it.answers
[QuestionAnswer!]!
Required
requirements.currentQuestion
Question
requirements(seevisibleQuestions) leaves nothing to ask.dependentOptions
[DependentOptionSet!]!
Required
id
ID!
Required
program
ComplianceProgram
programType) without a second read. Archived programs resolve: a session outlives its program, and the superseded measures are the ones worth naming. Null only when the program row is unreadable.programId
ID!
Required
questions
[SessionLineQuestion!]!
Required
requirementsfilters it as onvisibleQuestions.responseId
ID
status
SessionLineStatus!
Required
targetId
ID!
Required
targetType
ResponseTargetType!
Required
visibleQuestions
[SessionLineQuestion!]!
Required
requirementskeeps only questions at those levels (null/empty = every level). It narrows delivery, not the line: completion still blocks on REQUIRED alone. An unanswered question that a kept one's display condition gates on is kept too, or the gated question could never become visible.