# CSV to Dashboard Summary (`junipr/csv-to-dashboard-summary`) Actor

Turn CSV/tabular data into KPI summaries, dashboard-ready metrics, and insight reports.

- **URL**: https://apify.com/junipr/csv-to-dashboard-summary.md
- **Developed by:** [junipr](https://apify.com/junipr) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.50 / 1,000 item processeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CSV to Dashboard Summary

Convert CSV or tabular records into dashboard-ready KPI rows with grouped statistics, trends, missing-value checks, and outlier signals.

### What does CSV to Dashboard Summary do?

CSV to Dashboard Summary parses the complete bounded table, infers numeric columns, and calculates repeatable metrics for charts, KPI cards, and reporting feeds. Unlike a first-row preview, every accepted row contributes to counts, sums, averages, medians, ranges, trends, and IQR outlier checks.

- Parse quoted commas, escaped quotes, embedded newlines, BOM markers, duplicate headers, currencies, percentages, and accounting negatives.
- Read CSV text, inline JSON records, or bounded public CSV URLs.
- Infer numeric columns or use an explicit metric list.
- Group metrics by region, team, channel, product, status, or another categorical column.
- Choose sum, average, median, minimum, maximum, or count as the primary KPI value.
- Report missing values, small groups, outliers, first-to-last change, and visualization suggestions.
- Export dataset rows, metrics JSON, flat metrics CSV, summary JSON, and Markdown.

### Why Use This Actor

Spreadsheet pivots are useful for exploration but difficult to automate consistently. Dashboard platforms often expect already-shaped metrics and provide limited source-quality evidence. This actor creates a deterministic intermediate layer that can be scheduled or called through an API.

| Capability | CSV to Dashboard Summary | Spreadsheet pivot table | pandas script | BI import wizard |
| --- | --- | --- | --- | --- |
| Full bounded CSV parsing | Included | Included | Requires code | Product-dependent |
| Automatic numeric inference | Included | Manual selection | Requires code | Product-dependent |
| Grouped KPI rows | Included | Included | Requires code | Included |
| Missing and outlier signals | Included | Manual | Requires code | Product-dependent |
| First-to-last trend | Included | Manual | Requires code | Product-dependent |
| Apify dataset and report files | Included | No | Requires integration | Separate integration |
| Primary row-check price | $3.90 per 1,000 rows | Product-dependent | Engineering time | Product-dependent |

Use it for sales summaries, campaign reporting, operations dashboards, support metrics, finance exports, inventory reports, and scheduled stakeholder updates.

### How to Use

```json
{
  "csvText": "region,month,leads,revenue,conversionRate\nNorth,Jan,120,184000,0.18\nNorth,Feb,135,201000,0.20\nSouth,Jan,90,93000,0.11\nSouth,Feb,105,116000,0.14",
  "metrics": ["leads", "revenue", "conversionRate"],
  "groupBy": "region",
  "aggregation": "sum",
  "maxGroups": 25,
  "maxItems": 500,
  "includeReport": true
}
````

1. Paste CSV text, submit records, or enable a public CSV URL.
2. Leave `metrics` empty for inference or list the numeric columns explicitly.
3. Set `groupBy` for per-category metrics, or leave it empty for an overall summary.
4. Select the statistic that should appear in `metricValue`.
5. Use dataset rows directly in a dashboard feed and keep the summary for quality checks.

#### Sales KPI feed

Group by region or sales owner and summarize pipeline, wins, and revenue. Use `sum` for additive measures and inspect missing values before sending results to a weekly dashboard.

#### Conversion monitoring

Summarize conversion-rate columns with `average` or `median`. The row still includes sum, average, median, minimum, maximum, and first-to-last change so consumers can choose a different statistic later.

#### Operations outlier report

Run without grouping to find numeric columns with values outside the 1.5 IQR fences. Review source rows before treating an extreme value as a real operational event.

### Input Configuration

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `targets` | array | Included fixture | Multiple CSV, record, or URL sources. |
| `records` | array | `[]` | Inline tabular records for one source. |
| `csvText` | string | Empty | Quoted CSV content for one source. |
| `sourceUrl` | string | Empty | Public HTTP(S) CSV URL. |
| `fetchUrls` | boolean | `false` | Enables bounded public URL retrieval. |
| `delimiter` | string | `,` | Single-character delimiter. |
| `metrics` | string array | `[]` | Numeric columns to summarize; empty enables inference. |
| `groupBy` | string | Empty | Optional categorical grouping column. |
| `aggregation` | string | `average` | Statistic placed in `metricValue`. |
| `maxGroups` | integer | `25` | Per-source group cap, with a hard maximum of 100. |
| `maxTargets` | integer | `2` | Source cap, with a hard maximum of 20. |
| `maxItems` | integer | `500` | Per-source row cap, with a hard maximum of 10,000. |
| `maxTextBytes` | integer | `500000` | Maximum fetched response size. |
| `fetchTimeoutMs` | integer | `10000` | Per-request timeout in milliseconds. |
| `includeReport` | boolean | `true` | Creates JSON, CSV, summary, and Markdown files. |

Each source is limited to 100 metric columns, 100 group values, and 10,000 input rows, which bounds the maximum dataset size even when a wide table is supplied.

Public retrieval accepts HTTP and HTTPS only. Credentialed URLs, redirects, localhost, private networks, reserved ranges, private DNS answers, oversized bodies, and slow responses are rejected. A source failure produces a free diagnostic row instead of a misleading empty success.

### Output Format

Each dataset row represents one numeric metric for one source and optional group:

```json
{
  "sourceId": "monthly-sales",
  "metricName": "revenue",
  "aggregation": "sum",
  "metricValue": 385000,
  "groupBy": "region",
  "groupValue": "North",
  "rowCount": 2,
  "nonNullCount": 2,
  "missingCount": 0,
  "sum": 385000,
  "average": 192500,
  "median": 192500,
  "minimum": 184000,
  "maximum": 201000,
  "firstValue": 184000,
  "lastValue": 201000,
  "percentChange": 0.092391,
  "trend": "up",
  "outlierCount": 0,
  "outlierFlag": false,
  "chartSuggestion": "bar",
  "issueCodes": [],
  "issueCount": 0,
  "status": "ready"
}
```

Report files include `CSV_TO_DASHBOARD_SUMMARY_RESULTS.json`, `DASHBOARD_METRICS.csv`, `CSV_TO_DASHBOARD_SUMMARY_SUMMARY.json`, and `CSV_TO_DASHBOARD_SUMMARY_REPORT.md`.

### Integration Examples

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('junipr/csv-to-dashboard-summary').call({
  records: sourceRows,
  metrics: ['revenue', 'orders'],
  groupBy: 'region',
  aggregation: 'sum',
  maxItems: 500
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const kpis = items.filter((row) => row.status === 'ready');
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("junipr/csv-to-dashboard-summary").call(run_input={
    "csvText": csv_text,
    "metrics": ["revenue", "orders"],
    "aggregation": "average",
    "maxItems": 500,
})
metrics = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Tips and Advanced Usage

#### Select the right aggregation

Use `sum` for additive values such as revenue, orders, hours, or units. Use `average` or `median` for rates, durations, prices, and scores. Use `count` when the number of populated numeric values is the KPI.

#### Treat trends as source-order signals

`percentChange` compares the first and last numeric values in input order. Sort the source extract chronologically before running the actor when that field should represent a time trend.

#### Keep groups bounded

A high-cardinality identifier is usually not a useful dashboard grouping field. Use category-like fields and keep `maxGroups` low enough that charts remain readable and costs remain predictable.

#### Understand outliers

Outliers use standard 1.5 IQR fences. They are review signals, not proof of bad data. Small groups can legitimately show no outliers even when values differ substantially.

### Pricing

Prices follow the actor's locked pay-per-event contract and include platform usage for this bounded utility.

| Event | Price | Charged when |
| --- | ---: | --- |
| `actor-start` | $0.00500 | Run setup is accepted. |
| `row-checked` | $0.00390 | A source row is accepted for metric processing. |
| `issue-detected` | $0.00372 | A metric quality issue is emitted. |
| `qa-report-generated` | $0.05000 | Metrics JSON/CSV, summary, and report files are created. |

### FAQ

#### Does it render a visual dashboard?

No. It produces structured metric rows and chart suggestions for a dashboard, spreadsheet, database, or reporting application.

#### Can it parse currency and percentages?

Yes. Common currency symbols, comma separators, percentages, and parenthesized negatives are converted to numeric values.

#### How are numeric columns inferred?

A populated column is inferred when at least 60% of its populated values are numeric.

#### Why is a metric marked attention?

It contains missing values, an IQR outlier, or fewer than two numeric values.

#### Can it process multiple CSV files?

Yes. Add one entry per source to `targets`, subject to `maxTargets` and per-source caps.

#### Can it fetch an authenticated CSV export?

Credentialed URLs are intentionally rejected. Submit content directly or use a time-limited public HTTPS URL without embedded credentials.

### Related Actors

- CSV Deduper Normalizer
- Entity Deduplication Matcher
- Domain Extractor Grouper
- URL Canonicalizer

### Limitations and Safe Use

The actor calculates descriptive statistics; it does not infer business causality, forecast future results, or verify the correctness of source records. Review quality flags before publishing metrics, and remove confidential columns that are unnecessary for aggregate reporting.

# Actor input Schema

## `targets` (type: `array`):

One or more sources containing CSV text, inline records, or a public CSV URL.

## `records` (type: `array`):

Tabular records for one source.

## `csvText` (type: `string`):

CSV content for one source. Quoted commas and embedded newlines are supported.

## `sourceId` (type: `string`):

Stable identifier for a single top-level source.

## `sourceUrl` (type: `string`):

Optional public HTTP(S) CSV URL. Private, credentialed, and redirecting URLs are rejected.

## `fetchUrls` (type: `boolean`):

Retrieve sourceUrl values with DNS, timeout, redirect, and response-size safeguards.

## `delimiter` (type: `string`):

Single-character CSV delimiter.

## `metrics` (type: `array`):

Numeric columns to summarize. Leave empty to infer them.

## `groupBy` (type: `string`):

Optional categorical column for per-group metrics.

## `aggregation` (type: `string`):

Statistic placed in metricValue.

## `maxGroups` (type: `integer`):

Maximum group values summarized per source.

## `maxTargets` (type: `integer`):

Maximum sources processed per run.

## `maxItems` (type: `integer`):

Hard processing and billing cap per source.

## `maxTextBytes` (type: `integer`):

Maximum bytes accepted from each public CSV URL.

## `fetchTimeoutMs` (type: `integer`):

Maximum milliseconds for each public CSV request.

## `includeReport` (type: `boolean`):

Write metrics JSON/CSV, summary, and Markdown report files.

## `dryRun` (type: `boolean`):

Validate input without paid events or dataset output.

## `debug` (type: `boolean`):

Enable detailed logs.

## Actor input object example

```json
{
  "targets": [
    {
      "sourceId": "example-sales",
      "csvText": "region,leads,revenue,conversionRate\nNorth,120,184000,0.18\nSouth,90,93000,0.11\nWest,140,212000,0.21"
    }
  ],
  "records": [],
  "csvText": "",
  "sourceId": "table",
  "sourceUrl": "",
  "fetchUrls": false,
  "delimiter": ",",
  "metrics": [],
  "groupBy": "",
  "aggregation": "average",
  "maxGroups": 25,
  "maxTargets": 2,
  "maxItems": 500,
  "maxTextBytes": 500000,
  "fetchTimeoutMs": 10000,
  "includeReport": true,
  "dryRun": false,
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

Grouped metric rows for charts, KPI cards, and tables.

## `resultsJson` (type: `string`):

Complete metric export when reports are enabled.

## `metricsCsv` (type: `string`):

Flat dashboard metric export.

## `summary` (type: `string`):

Counts, quality issues, and truncation flags.

## `markdownReport` (type: `string`):

Human-readable KPI and quality report.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("junipr/csv-to-dashboard-summary").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("junipr/csv-to-dashboard-summary").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call junipr/csv-to-dashboard-summary --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=junipr/csv-to-dashboard-summary",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CSV to Dashboard Summary",
        "description": "Turn CSV/tabular data into KPI summaries, dashboard-ready metrics, and insight reports.",
        "version": "1.0",
        "x-build-id": "tb2HEiBrNGh3JcclP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/junipr~csv-to-dashboard-summary/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-junipr-csv-to-dashboard-summary",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/junipr~csv-to-dashboard-summary/runs": {
            "post": {
                "operationId": "runs-sync-junipr-csv-to-dashboard-summary",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/junipr~csv-to-dashboard-summary/run-sync": {
            "post": {
                "operationId": "run-sync-junipr-csv-to-dashboard-summary",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "targets": {
                        "title": "Data Sources",
                        "type": "array",
                        "description": "One or more sources containing CSV text, inline records, or a public CSV URL.",
                        "items": {
                            "type": "object"
                        },
                        "default": [
                            {
                                "sourceId": "example-sales",
                                "csvText": "region,leads,revenue,conversionRate\nNorth,120,184000,0.18\nSouth,90,93000,0.11\nWest,140,212000,0.21"
                            }
                        ]
                    },
                    "records": {
                        "title": "Inline Records",
                        "type": "array",
                        "description": "Tabular records for one source.",
                        "items": {
                            "type": "object"
                        },
                        "default": []
                    },
                    "csvText": {
                        "title": "CSV Text",
                        "type": "string",
                        "description": "CSV content for one source. Quoted commas and embedded newlines are supported.",
                        "default": ""
                    },
                    "sourceId": {
                        "title": "Source ID",
                        "type": "string",
                        "description": "Stable identifier for a single top-level source.",
                        "default": "table"
                    },
                    "sourceUrl": {
                        "title": "Public CSV URL",
                        "type": "string",
                        "description": "Optional public HTTP(S) CSV URL. Private, credentialed, and redirecting URLs are rejected.",
                        "default": ""
                    },
                    "fetchUrls": {
                        "title": "Fetch Public URLs",
                        "type": "boolean",
                        "description": "Retrieve sourceUrl values with DNS, timeout, redirect, and response-size safeguards.",
                        "default": false
                    },
                    "delimiter": {
                        "title": "Delimiter",
                        "type": "string",
                        "description": "Single-character CSV delimiter.",
                        "default": ","
                    },
                    "metrics": {
                        "title": "Metric Columns",
                        "type": "array",
                        "description": "Numeric columns to summarize. Leave empty to infer them.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "groupBy": {
                        "title": "Group By Column",
                        "type": "string",
                        "description": "Optional categorical column for per-group metrics.",
                        "default": ""
                    },
                    "aggregation": {
                        "title": "Primary Aggregation",
                        "enum": [
                            "sum",
                            "average",
                            "median",
                            "minimum",
                            "maximum",
                            "count"
                        ],
                        "type": "string",
                        "description": "Statistic placed in metricValue.",
                        "default": "average"
                    },
                    "maxGroups": {
                        "title": "Maximum Groups",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum group values summarized per source.",
                        "default": 25
                    },
                    "maxTargets": {
                        "title": "Maximum Sources",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum sources processed per run.",
                        "default": 2
                    },
                    "maxItems": {
                        "title": "Maximum Rows Per Source",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard processing and billing cap per source.",
                        "default": 500
                    },
                    "maxTextBytes": {
                        "title": "Maximum Download Bytes",
                        "minimum": 1000,
                        "maximum": 2000000,
                        "type": "integer",
                        "description": "Maximum bytes accepted from each public CSV URL.",
                        "default": 500000
                    },
                    "fetchTimeoutMs": {
                        "title": "Fetch Timeout",
                        "minimum": 1000,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Maximum milliseconds for each public CSV request.",
                        "default": 10000
                    },
                    "includeReport": {
                        "title": "Create Report Files",
                        "type": "boolean",
                        "description": "Write metrics JSON/CSV, summary, and Markdown report files.",
                        "default": true
                    },
                    "dryRun": {
                        "title": "Dry Run",
                        "type": "boolean",
                        "description": "Validate input without paid events or dataset output.",
                        "default": false
                    },
                    "debug": {
                        "title": "Debug Logs",
                        "type": "boolean",
                        "description": "Enable detailed logs.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
