get-async-operation-results
dci get-async-operation-results operationId
Returns the result of a succeeded async report operation, including report metadata (id, reportName, owner, type, createTime, updateTime, urlUI) when the operation was started against a saved report — the same shape as the sync GetReportResponse, instead of requiring a second call to GET /analytics/v1/reports/{id}/config for it. Returns 404 if the operationId does not exist, has expired, or belongs to a different tenant. Returns 425 Too Early if the operation has not yet reached a terminal state — poll the operation status endpoint, which returns its own Retry-After guidance, until it succeeds. Returns 422 if the operation terminated as failed or canceled. The poll status endpoint response does not include result data inline — this is the only endpoint that returns it.
Output
OK — the operation succeeded; body is the report result, plus report metadata when the operation was started against a saved report.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
| Field | Type | Description |
|---|---|---|
id | string | The report's id. Present only when the operation was started against a saved report (run by id); omitted for ad hoc runs against an inline config. |
reportName | string | The report's current name, looked up at read time (not a snapshot from when the operation started). Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. |
owner | string | Email address of the report owner, looked up at read time. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. |
type | string | Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. One of: "custom", "preset". |
createTime | integer (int64) | The creation time of the report, in milliseconds since the epoch. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. |
updateTime | integer (int64) | The time when the report was last updated, in milliseconds since the epoch, looked up at read time. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. |
urlUI | string | The URL of the report in DoiT console. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config. |
result | object | |
result.schema | array of object | |
result.schema[].id | string | Stable allocation-group ID used to select the allocation dimension in report configurations. Omitted for other report columns. |
result.schema[].name | string | Column name. Matches the corresponding value position in each row. |
result.schema[].type | string | Wire-format type of the column values. Dimension columns use string; metric columns use float (cost, usage, saving, custom, and extended metrics) or integer (count aggregation). Time-series reports include a timestamp column. One of: "string", "float", "integer", "timestamp". |
result.schema[].unit | string | Semantic unit of the column values. One of: "currency", "number", "percent". |
result.schema[].currency | string | Effective ISO 4217 currency code when unit is currency. |
result.schema[].aggregation | string | Authoritative aggregation applied to this metric column. One of: "total", "percent_total", "percent_col", "percent_row", "total_over_total", "count". |
result.mlFeatures | array of string | |
result.rows | array of array of string or number or integer | |
result.secondaryRows | array of array of string or number or integer | Secondary time range rows. |
result.forecastRows | array of array of string or number or integer | |
result.cacheHit | boolean | If true, results were fetched from the cache. |
Raw JSON schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The report's id. Present only when the operation was started against a saved report (run by id); omitted for ad hoc runs against an inline config."
},
"reportName": {
"type": "string",
"description": "The report's current name, looked up at read time (not a snapshot from when the operation started). Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"owner": {
"type": "string",
"description": "Email address of the report owner, looked up at read time. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"type": {
"type": "string",
"enum": [
"custom",
"preset"
],
"description": "Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"createTime": {
"type": "integer",
"format": "int64",
"description": "The creation time of the report, in milliseconds since the epoch. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"updateTime": {
"type": "integer",
"format": "int64",
"description": "The time when the report was last updated, in milliseconds since the epoch, looked up at read time. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"urlUI": {
"type": "string",
"description": "The URL of the report in DoiT console. Present only when the operation was started against a saved report (run by id) and the report still exists; omitted for ad hoc runs against an inline config."
},
"result": {
"type": "object",
"properties": {
"schema": {
"type": "array",
"items": {
"type": "object",
"description": "Schema of a report result column.",
"properties": {
"id": {
"type": "string",
"description": "Stable allocation-group ID used to select the allocation dimension in report configurations. Omitted for other report columns."
},
"name": {
"type": "string",
"description": "Column name. Matches the corresponding value position in each row."
},
"type": {
"type": "string",
"description": "Wire-format type of the column values. Dimension columns use string; metric columns use float (cost, usage, saving, custom, and extended metrics) or integer (count aggregation). Time-series reports include a timestamp column.",
"enum": [
"string",
"float",
"integer",
"timestamp"
]
},
"unit": {
"type": "string",
"description": "Semantic unit of the column values.",
"enum": [
"currency",
"number",
"percent"
]
},
"currency": {
"type": "string",
"description": "Effective ISO 4217 currency code when unit is currency.",
"example": "USD"
},
"aggregation": {
"type": "string",
"description": "Authoritative aggregation applied to this metric column.",
"enum": [
"total",
"percent_total",
"percent_col",
"percent_row",
"total_over_total",
"count"
]
}
}
}
},
"mlFeatures": {
"type": "array",
"items": {
"type": "string",
"enum": [
"increasing",
"decreasing",
"none",
"forecast"
]
}
},
"rows": {
"type": "array",
"items": {
"type": "array",
"items": {
"description": "The content of a single cell from a BigQuery result. Can be a string, number, or null.",
"nullable": true,
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "integer"
}
]
}
}
},
"secondaryRows": {
"type": "array",
"description": "Secondary time range rows.",
"items": {
"type": "array",
"items": {
"description": "The content of a single cell from a BigQuery result. Can be a string, number, or null.",
"nullable": true,
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "integer"
}
]
}
}
},
"forecastRows": {
"type": "array",
"items": {
"type": "array",
"items": {
"description": "The content of a single cell from a BigQuery result. Can be a string, number, or null.",
"nullable": true,
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "integer"
}
]
}
}
},
"cacheHit": {
"type": "boolean",
"description": "If true, results were fetched from the cache."
}
}
}
}
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400, 422 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 401 | 10 | AUTHENTICATION_FAILED | Not signed in, or the API token is invalid. Run dci login or check DCI_API_KEY. |
| 403 | 11 | PERMISSION_DENIED | The DoiT user or the active customer context does not have access. |
| 404 | 20 | RESOURCE_NOT_FOUND | The requested resource does not exist. Check the identifier argument. |
| 425 | 1 | API_ERROR | The request failed; the printed error message has details. |
| 500 | 40 | API_SERVER_ERROR | The API failed to process the request. Retryable; contact DoiT support if it persists. |
Aliases: getasyncoperationresults