Product Questions
Retrieve a product's question hierarchy to render intake forms, or retrieve its hosted version deployment timeline.
Get Product Questions#
POST https://api.{ENV}.dais.com/ioi/v3/product/{product_id}/questions
Headers#
| Header | Value | Required |
|---|---|---|
Content-Type | application/json | Yes |
Authorization | Basic <Base64-encoded API key and secret> or Bearer <Access token> | Yes |
x-jwt-assertion | <ID token> | With token authentication |
See Authentication.
Request#
product_id is the product UUID. Send a JSON object, even when no options are needed ({}).
curl --location --request POST 'https://api.{ENV}.dais.com/ioi/v3/product/<UUID of the product ID>/questions' \
--header 'Authorization: Basic <Base64-encoded API key and secret>' \
--header 'Content-Type: application/json' \
--data-raw '{
"answers": {
"<Business name question ID>": {
"type": "ANSWER",
"answer": "<Business name>",
"qid": "<Business name question ID>"
}
},
"skipLineQuestions": [],
"excludeQuestions": false
}'
| Property | Type | Required | Description |
|---|---|---|---|
answers | object | No | Map of QIDs to answer objects supplied when evaluating product questions. |
skipLineQuestions | array of UUIDs | No | Line/product UUIDs supplied as question-exclusion selectors, not individual question IDs. |
excludeQuestions | boolean | No | Question-exclusion option, default false. |
The question service interprets the exclusion options. Do not assume that excludeQuestions removes the product tree or returns an empty lines array.
Response#
Returns a product display object. The root uses lineId, and product is a single object. Questions are under each product's display; nested products are in lines.
This example shows a product with one question:
{
"lineId": "<UUID of the product ID>",
"lineName": "<Product name>",
"generatesQuotes": true,
"supportedEvents": {},
"toc": [],
"product": {
"id": "<UUID of the product ID>",
"active": true,
"title": "<Title>",
"clientType": "COMMERCIAL",
"type": "CUSTOM",
"display": {
"sections": [
{
"title": "<Title>",
"subsections": [
{
"title": "<Title>",
"questions": [
{
"qid": "<Business name question ID>",
"lineId": "<UUID of the product ID>",
"question": "<Question text>",
"answerType": "TEXT",
"required": true,
"visible": true,
"defaultAnswer": "<Default answer>"
}
]
}
]
}
]
},
"lines": [],
"template": false
}
}
Product Display Fields#
| Field | Type | Description |
|---|---|---|
lineId | UUID | Product identifier. |
ownerOrganizationId | UUID | Product owner's organization. |
lineName | string | Product name. |
ocrId | string | Product OCR identifier, when present. |
generatesQuotes | boolean | Whether the product supports quoting. |
supportedEvents | object | Map of configuration UUIDs to event type arrays. |
toc | array | Product table of contents. |
product | object | Root product and its recursive child products. |
lineRulesMap | object | Rules keyed by line UUID, when supplied. |
packageVersionMap | object | Map of product UUIDs to version UUIDs, when supplied. |
Product and Question Hierarchy#
A product includes id, title, active, clientType, type, an optional display, and a lines array containing child products of the same shape.
Each display.sections[] entry has title and subsections. Each subsection has title and questions. Sections and subsections do not expose UUID id fields.
| Question field | Type | Description |
|---|---|---|
qid | string | Identifier used as the key in intake and client answer maps. |
lineId | UUID | Product/line containing the question. |
question | string | Question text. |
answerType | string | Answer control type, such as TEXT, SELECT, BOOLEAN, NUMBER, or DATE. |
required | boolean | Whether an answer is required. |
visible | boolean | Whether the question is visible. |
defaultAnswer | string | Default answer, when supplied. |
answerChoices | array | Available choices for a choice-based answer. |
min, max | integer | Configured bounds, when applicable. |
condition | object | Conditional display definition, when supplied. |
loopDefinitionDto | object | Loop definition, when the question represents a loop. |
loopQuestions | array | Questions within a loop. |
order | integer | Question ordering value. |
Use qid, question, answerType, and defaultAnswer when reading question definitions. Submitted answers remain in the request's separate answers map; question definitions do not contain an answer property. The response does not provide alternative question fields named id, label, or type.
See Products and Questions for intake and QID guidance.
Get Hosted Product Versions#
GET https://api.{ENV}.dais.com/ioi/v3/product/{product_id}/hosted-versions
Returns the product's deployment timeline grouped by environment. product_id is a UUID; no request body is needed.
curl --location --request GET 'https://api.{ENV}.dais.com/ioi/v3/product/<UUID of the product ID>/hosted-versions' \
--header 'Authorization: Basic <Base64-encoded API key and secret>'
Response#
{
"envirnmentDeplymentTimelineMap": {
"DEV": [
{
"versionId": "<UUID of the product version ID>",
"organizationId": "<UUID of the organization ID>",
"version": "<Version label>",
"buildNumber": 1,
"active": true,
"status": "LIVE",
"effectiveDate": "2026-01-01",
"expirationDate": "2026-12-31",
"numberOfDays": 365,
"proportionalLength": 100
}
]
}
}
The field name envirnmentDeplymentTimelineMap preserves the spelling in the API response. Its keys are DEV, UAT, and PROD; each value is an array of deployment segments.
| Segment field | Type | Description |
|---|---|---|
versionId | UUID | Version identifier. |
organizationId | UUID | Version's organization. |
version | string | Version label. |
buildNumber | integer | Build number. |
active | boolean | Whether the version is active. |
status | string | ARCHIVED, LIVE, RETIRED, SCHEDULED, or NOT_DEPLOYED. |
effectiveDate | date | Segment start date, formatted YYYY-MM-DD. |
expirationDate | date | Segment expiration date, when supplied. |
numberOfDays | integer | Timeline segment duration metadata. |
proportionalLength | integer | Timeline segment display metadata. |
createdTimestamp, updatedTimestamp | ISO 8601 timestamp | Version creation/update timestamps. |
createdBy | object | User information for the version creator. |
messageCount, forkCount | integer | Version message and fork counts. |
supportsRepositoryOperations | boolean | Whether repository operations are supported for this version. |
The example illustrates the response shape; available environments and segments depend on the product's deployment history.