Skip to content

Product Questions

Retrieve a product's question hierarchy to render intake forms, or retrieve its hosted version deployment timeline.

Get Product Questions#

HTTPPOST
POST https://api.{ENV}.dais.com/ioi/v3/product/{product_id}/questions

Headers#

HeaderValueRequired
Content-Typeapplication/jsonYes
AuthorizationBasic <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
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
}'
PropertyTypeRequiredDescription
answersobjectNoMap of QIDs to answer objects supplied when evaluating product questions.
skipLineQuestionsarray of UUIDsNoLine/product UUIDs supplied as question-exclusion selectors, not individual question IDs.
excludeQuestionsbooleanNoQuestion-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:

JSON
{
  "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#

FieldTypeDescription
lineIdUUIDProduct identifier.
ownerOrganizationIdUUIDProduct owner's organization.
lineNamestringProduct name.
ocrIdstringProduct OCR identifier, when present.
generatesQuotesbooleanWhether the product supports quoting.
supportedEventsobjectMap of configuration UUIDs to event type arrays.
tocarrayProduct table of contents.
productobjectRoot product and its recursive child products.
lineRulesMapobjectRules keyed by line UUID, when supplied.
packageVersionMapobjectMap 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 fieldTypeDescription
qidstringIdentifier used as the key in intake and client answer maps.
lineIdUUIDProduct/line containing the question.
questionstringQuestion text.
answerTypestringAnswer control type, such as TEXT, SELECT, BOOLEAN, NUMBER, or DATE.
requiredbooleanWhether an answer is required.
visiblebooleanWhether the question is visible.
defaultAnswerstringDefault answer, when supplied.
answerChoicesarrayAvailable choices for a choice-based answer.
min, maxintegerConfigured bounds, when applicable.
conditionobjectConditional display definition, when supplied.
loopDefinitionDtoobjectLoop definition, when the question represents a loop.
loopQuestionsarrayQuestions within a loop.
orderintegerQuestion 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#

HTTPGET
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
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#

JSON
{
  "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 fieldTypeDescription
versionIdUUIDVersion identifier.
organizationIdUUIDVersion's organization.
versionstringVersion label.
buildNumberintegerBuild number.
activebooleanWhether the version is active.
statusstringARCHIVED, LIVE, RETIRED, SCHEDULED, or NOT_DEPLOYED.
effectiveDatedateSegment start date, formatted YYYY-MM-DD.
expirationDatedateSegment expiration date, when supplied.
numberOfDaysintegerTimeline segment duration metadata.
proportionalLengthintegerTimeline segment display metadata.
createdTimestamp, updatedTimestampISO 8601 timestampVersion creation/update timestamps.
createdByobjectUser information for the version creator.
messageCount, forkCountintegerVersion message and fork counts.
supportsRepositoryOperationsbooleanWhether repository operations are supported for this version.

The example illustrates the response shape; available environments and segments depend on the product's deployment history.