Skip to main content

Framework answers page

Produced by POST /api/v2/bulk/framework-answers/search; the task reports "requestType": "BulkGetFrameworkAnswers". One file per page of companies, each a complete document — see Result files for how pages are delivered and the conventions they share. The framework answers workflow walks through a job end to end.

Datapoint and custom-property descriptions are declared once at the top of the page and referenced by id from every company; answers are grouped into reporting periods rather than repeating their period on each row.

Top level

FieldTypeNotes
dataPointsDataPoint[]Every datapoint that carries an answer anywhere in the page.
customPropertiesCustomProperty[]Names for the requested properties your profile owns. Drawn from that list rather than from the values, so it is identical on every page and can name a property no company in the export holds a value for; every key in this page's companies[].fields still resolves here. A requested id your profile does not own is silently left out rather than rejected. Absent when the request asked for no custom properties.
companiesCompany[]The page's companies.

DataPoint

FieldTypeNotes
iduuidWhat answers[].dataPointId points to.
questionIduuidThe question this datapoint belongs to; several datapoints can share one.
inFrameworksuuid[]The requested frameworks whose data produced this entry. Answers for it appear only under framework entries listed here. When merging frameworks that share a datapoint, use it to count such an answer once.
listOptionsListOption[]The options of a list datapoint: { id, title }. A list answer carries option ids only; the titles live here. Absent for other datapoint types.

CustomProperty

FieldTypeNotes
iduuidWhat a key in companies[].fields resolves against.
namestring

Company

FieldTypeNotes
iduuidThe company id the rest of the API uses.
namestring
fieldsobjectKeyed by custom-property id, each value a string[] of that property's values for the company. Holds only the ids the request listed in customPropertyIds; absent when none apply.
frameworksFramework[]One entry per framework and reporting-period start.

Framework

One company's assignment to a framework for a reporting period.

FieldTypeNotes
frameworkIduuid
startYearintegerThe reporting period's start year — what the request's period.years selects on.
startMonthmonth name"January""December". A yearly period covers twelve months from here; "April" with startYear: 2026 is April 2026 through March 2027.
isCompletebooleanWhether the company finished the framework for this period.
progressProgressThe question counts behind isComplete.
periodsPeriod[]The answers, bucketed by reporting period.
hiddenQuestionIdsuuid[]Questions the framework's visibility rules hide for this company — its other answers make them inapplicable. Absent when nothing is hidden.
omittedQuestionIdsuuid[]Questions the company declared it will not answer for this period. Absent when nothing is omitted.

periods carries no answer under a hidden or omitted question. The two lists are disjoint: a question that is both hidden and omitted is listed as hidden only.

Progress

FieldTypeNotes
totalQuestionsinteger
totalRequiredQuestionsinteger
addressedQuestionsinteger
addressedRequiredQuestionsinteger
scoreCategoriesFrameworkScoreCategory[]{ id, name, attainedScore, attainableScore } per scoring category. Only on frameworks that score; absent otherwise.

Period

FieldTypeNotes
periodType"Yearly" or "Monthly"
yearinteger
monthmonth namePresent on monthly periods only.
answersAnswerEntry[]

A single framework entry can carry a yearly period and several monthly ones side by side. Neither is derived from the other — a consumer that reads only one kind is reading a subset of the data. A search whose period.reportingPeriodTypes is ["Yearly"] receives yearly buckets only, including the yearly totals BeCause computes for companies that reported monthly figures without entering a yearly one.

AnswerEntry

FieldTypeNotes
dataPointIduuidResolves in the page's dataPoints.
answerAnswerValue
unitIduuidThe unit a numeric answer is expressed in; resolve through GET /api/v1/unit-types. Absent when the datapoint has no unit.
scoreCategoriesAnswerScoreCategory[]{ id, name, attainedScore } — what this answer contributed per scoring category. Only on scored frameworks.

AnswerValue

Exactly one key is present; the others are absent.

KeyTypeNotes
textstring
numberdecimal
booleanboolean
dateIsostringISO 8601 calendar date.
dateRangeFromDateIso / dateRangeToDateIsostringA date range; both keys present together.
listuuid[]Option ids, resolved in the datapoint's listOptions.
tupleTupleA table answer: { rows: [ { columns: [ TupleCell, … ] }, … ] }. Each TupleCell carries exactly one of text, number, boolean, dateIso, dateRangeFromDateIso / dateRangeToDateIso or list.
fileUrlstringThe URL of an uploaded file.

Example

{
"dataPoints": [
{
"id": "f12ed4cd-9a3b-4e7c-8d21-5b6a7c8d9e01",
"questionId": "2cc6d60c-1f4a-4b8e-9c3d-7e8f9a0b1c02",
"inFrameworks": [
"8f21b3c6-4e5d-4a2b-9c7e-1b3a5d7f0001",
"8f21b3c6-4e5d-4a2b-9c7e-1b3a5d7f0002"
]
},
{
"id": "7294d68d-3c5e-4f9a-b1d2-8e9f0a1b2c03",
"questionId": "9a41c7be-6d2f-4a8b-9e0c-1d2e3f4a5b04",
"inFrameworks": ["8f21b3c6-4e5d-4a2b-9c7e-1b3a5d7f0002"]
},
{
"id": "5069e92e-8b1c-4d6e-a3f4-9c0d1e2f3a05",
"questionId": "d1f82a55-4e7b-4c9d-8a1e-2f3a4b5c6d06",
"inFrameworks": ["8f21b3c6-4e5d-4a2b-9c7e-1b3a5d7f0002"],
"listOptions": [
{ "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c07", "title": "Solar" },
{ "id": "e5f6a7b8-9c0d-4e1f-a2b3-4c5d6e7f8a08", "title": "Wind" }
]
}
],
"customProperties": [
{ "id": "0992e704-5c3b-4b6e-8a1d-7f2e9c4b6d18", "name": "Property code" }
],
"companies": [
{
"id": "9c56d3a1-8b0f-4c7a-9e2d-5b1a7f3e0c11",
"name": "Hotel Aurora",
"fields": {
"0992e704-5c3b-4b6e-8a1d-7f2e9c4b6d18": ["HA-2041"]
},
"frameworks": [
{
"frameworkId": "8f21b3c6-4e5d-4a2b-9c7e-1b3a5d7f0002",
"startYear": 2025,
"startMonth": "January",
"isComplete": false,
"progress": {
"totalQuestions": 39,
"totalRequiredQuestions": 30,
"addressedQuestions": 24,
"addressedRequiredQuestions": 21
},
"periods": [
{
"periodType": "Yearly",
"year": 2025,
"answers": [
{
"dataPointId": "f12ed4cd-9a3b-4e7c-8d21-5b6a7c8d9e01",
"answer": { "boolean": true }
},
{
"dataPointId": "5069e92e-8b1c-4d6e-a3f4-9c0d1e2f3a05",
"answer": { "list": ["a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c07"] }
}
]
},
{
"periodType": "Monthly",
"year": 2025,
"month": "March",
"answers": [
{
"dataPointId": "7294d68d-3c5e-4f9a-b1d2-8e9f0a1b2c03",
"answer": { "number": 3120 },
"unitId": "b1c9e0a4-2d3e-4f5a-8b6c-7d8e9f0a1b12"
}
]
}
],
"omittedQuestionIds": ["3e8b5f2a-7c1d-4e9f-a0b1-2c3d4e5f6a13"]
}
]
}
]
}