Calculators upsert result
Produced by POST /api/v1/bulk/calculators/upsert; the task reports "requestType": "BulkUpsertCalculators". A single-file result: the task's result reports pageSize: -1 and holds a single page entry with companyCount: -1, and the file behind its url is the complete, uncompressed JSON outcome of the import — one entry per calculator row you sent, sorted into the rows that landed and the rows that did not.
Unlike the page files, this file emits null for fields without a value.
Top level
| Field | Type | Notes |
|---|---|---|
successfulResults | SuccessfulResult[] | Rows that were stored. |
errorResults | ErrorResult[] | Rows that were rejected, each with the reason. |
Both lists are always present; an import where everything landed has an empty errorResults.
SuccessfulResult
| Field | Type | Notes |
|---|---|---|
customIdentifierValue | string | The identifier value you named the company by in the request. |
reportingPeriod | { year, month } | The calculator's period; month is a month name, null for a yearly calculator. |
successType | "Created" or "Updated" | Whether the row created a new calculator or updated an existing one for that company and period. |
ErrorResult
| Field | Type | Notes |
|---|---|---|
customIdentifierValue | string | As above. |
reportingPeriod | { year, month } | As above. |
message | string | Why the row was rejected — an identifier that matched no company, an unknown calculator type, a value that does not parse. |
Example
{
"successfulResults": [
{
"customIdentifierValue": "HA-2041",
"reportingPeriod": { "year": 2025, "month": null },
"successType": "Created"
},
{
"customIdentifierValue": "HA-2042",
"reportingPeriod": { "year": 2025, "month": "March" },
"successType": "Updated"
}
],
"errorResults": [
{
"customIdentifierValue": "HA-9999",
"reportingPeriod": { "year": 2025, "month": null },
"message": "No company matched identifier value 'HA-9999'."
}
]
}