# Semver Range Checker (`automation-lab/semver-range-checker`) Actor

Bulk-check version strings against semver range expressions. Pass versions + a range like ^1.2.0 or >=2.0.0 <3.0.0, get pass/fail per version and the latest satisfying version. Zero proxy cost.

- **URL**: https://apify.com/automation-lab/semver-range-checker.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Semver Range Checker

### What does Semver Range Checker do?

**Semver Range Checker** evaluates a list of version strings against a [semver](https://semver.org/) range expression — `^1.2.0`, `~2.3`, `>=1.0.0 <3.0.0`, `1.x`, `*` — and tells you which versions satisfy or fail the range. It also returns the **latest satisfying version** across the entire input list.

Pure computation: no web requests, no proxies, no credentials needed. Submit your versions and range, get results in seconds. Export to JSON, CSV, or Excel.

Try it directly on the [Apify Store](https://apify.com/automation-lab/semver-range-checker) — no sign-up required for a free trial.

---

### Who is Semver Range Checker for?

**DevOps engineers and release managers** who need to audit which package versions in their dependency graph are compatible with an upgrade target — without manually running `npm semver` one version at a time.

**Backend developers and library maintainers** who want to validate that a list of versions gathered from user reports, analytics, or changelogs are covered by a given version constraint before publishing a breaking change.

**QA and automation engineers** running release pipelines that need to programmatically check version compatibility as part of a CI gate or webhook-triggered workflow.

**Security teams** auditing whether deployed versions of a dependency fall inside or outside a patched range (e.g., `>=2.4.1 <3.0.0`) across many environments.

---

### Why use Semver Range Checker?

- ✅ **No code required** — paste versions and range, click Run
- ✅ **Bulk processing** — check hundreds of versions in one run
- ✅ **Supports all semver range syntax** — caret (`^`), tilde (`~`), hyphen ranges, comparator sets, wildcards (`x`, `*`)
- ✅ **Prerelease support** — opt in to include prerelease versions (e.g., `2.0.0-beta.1`) in range matching
- ✅ **Latest satisfying version** — each output row includes the highest version from your list that satisfies the range
- ✅ **Graceful error handling** — invalid version strings are flagged in the output without crashing the run
- ✅ **Zero proxy cost** — pure computation, no bandwidth charges
- ✅ **Integrates with 5,000+ apps** via Zapier, Make, and the Apify API

---

### What data can you extract?

| Field | Type | Description |
|-------|------|-------------|
| `version` | string | The input version string (cleaned/normalized) |
| `satisfies` | boolean | Whether this version satisfies the given range |
| `latestSatisfying` | string \| null | The highest version from the input list that satisfies the range |
| `error` | string \| null | Parse error message if the version string was invalid; null otherwise |

---

### How much does it cost to check semver ranges?

Semver Range Checker uses **pay-per-event (PPE)** pricing — you pay only for what you use.

| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|-------|------|--------|--------|------|----------|---------|
| Run started | $0.005 | $0.00475 | $0.00425 | $0.00375 | $0.003 | $0.0025 |
| Per version checked | $0.0001 | $0.00009 | $0.00008 | $0.000065 | $0.00005 | $0.00004 |

**Real-world cost examples (FREE tier):**

| Use case | Versions | Estimated cost |
|----------|----------|----------------|
| Quick spot-check | 10 | ~$0.006 |
| Dependency audit | 100 versions | ~$0.015 |
| Large release gate | 1,000 versions | ~$0.105 |

**Free plan:** Apify gives every new account **$5 in free credits**. That's enough to check ~47,000 versions for free.

Volume discounts apply automatically at higher Apify plan tiers — the per-version price drops to $0.00004 at DIAMOND (60% off FREE tier pricing).

---

### How to check semver ranges

1. Go to [Semver Range Checker on Apify Store](https://apify.com/automation-lab/semver-range-checker)
2. Click **Try for free**
3. In the **Version strings** field, enter your version list (one per line or as a JSON array)
4. In the **Semver range expression** field, enter your range (e.g., `^2.0.0`)
5. Toggle **Include prerelease versions** if your list includes prerelease strings
6. Click **Start** — results appear in seconds
7. Download your results as **JSON**, **CSV**, or **Excel** from the Dataset tab

**Example: Check which of your deployed versions are covered by a security patch**

Input:
```json
{
    "versions": ["1.8.0", "1.9.2", "2.0.0", "2.1.3", "3.0.0-rc.1"],
    "range": ">=1.9.0 <3.0.0"
}
````

**Example: Find the latest 1.x release in a list**

Input:

```json
{
    "versions": ["1.0.0", "1.4.2", "1.9.9", "2.0.0"],
    "range": "1.x"
}
```

**Example: Include prerelease versions in matching**

Input:

```json
{
    "versions": ["2.0.0-alpha.1", "2.0.0-beta.2", "2.0.0"],
    "range": ">=2.0.0-alpha.0 <2.0.0",
    "includePrerelease": true
}
```

***

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `versions` | array of strings | ✅ Yes | — | List of semver version strings to evaluate. Each must be a valid semver version (e.g., `1.2.3`, `2.0.0-beta.1`). |
| `range` | string | ✅ Yes | — | Semver range expression (e.g., `^1.2.0`, `~2.3`, `>=1.0.0 <3.0.0`, `1.x`, `*`). |
| `includePrerelease` | boolean | No | `false` | When `true`, prerelease versions are included in range matching. By default, prereleases are excluded unless the range itself specifies a prerelease. |

***

### Output examples

A run with `range: "^1.0.0"` and versions `["1.0.0","1.2.3","2.0.0","0.9.9","1.0.0-beta.1"]`:

```json
[
    { "version": "1.0.0", "satisfies": true, "latestSatisfying": "1.2.3", "error": null },
    { "version": "1.2.3", "satisfies": true, "latestSatisfying": "1.2.3", "error": null },
    { "version": "2.0.0", "satisfies": false, "latestSatisfying": "1.2.3", "error": null },
    { "version": "0.9.9", "satisfies": false, "latestSatisfying": "1.2.3", "error": null },
    { "version": "1.0.0-beta.1", "satisfies": false, "latestSatisfying": "1.2.3", "error": null }
]
```

Invalid version strings produce an error row and are not charged:

```json
[
    { "version": "not-a-version", "satisfies": null, "latestSatisfying": null, "error": "Invalid semver version: \"not-a-version\"" }
]
```

***

### Tips for best results

- 🔢 **Start small** — test with 5–10 representative versions first to verify your range expression behaves as expected before submitting hundreds
- 📝 **Quote complex ranges** — ranges with spaces like `>=1.0.0 <2.0.0` or `1.0.0 - 2.0.0` must be a single string in the JSON input field; don't split them into separate entries
- 🔖 **Prerelease gotcha** — by default `^1.0.0` does NOT match `1.1.0-beta.1` even though it's "above" `1.0.0`. Enable **Include prerelease versions** or use an explicit prerelease range to opt in
- 📦 **NPM-style ranges work** — the underlying library is [`semver`](https://github.com/npm/node-semver), the same one used by npm, so any range valid in `package.json` works here
- 🗂️ **Batch large audits** — for auditing thousands of versions, set a generous `timeoutSecs` in the advanced options (default is 60 s — more than enough for 10,000 versions)

***

### Integrations

**Semver Range Checker → Slack alert**
Schedule a daily run that checks whether any of your microservices' deployed versions fall outside your supported range. Use a webhook to post a Slack message when any `satisfies: false` rows appear.

**Semver Range Checker → Google Sheets**
Run the checker and use Apify's Google Sheets integration to export results directly into a spreadsheet. Highlight rows where `satisfies` is `false` using Sheets conditional formatting for instant visibility.

**Semver Range Checker → Make (Integromat) CI gate**
Trigger a Make scenario from your CI pipeline via HTTP request. Pass the list of installed dependency versions as input. If any version fails the range, use Make's Router to send an alert email and block the merge.

**Scheduled version compliance monitoring**
Use Apify's **Schedules** to run the checker nightly against a static list of supported clients or deployment targets. Build a dashboard in Google Data Studio using the Dataset API endpoint as the data source.

**Semver Range Checker → Zapier → PagerDuty**
Connect via Zapier to trigger a PagerDuty incident automatically if a version audit finds out-of-range deployments — ideal for zero-day vulnerability response workflows.

***

### Using the Apify API

#### Node.js

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('automation-lab/semver-range-checker').call({
    versions: ['1.0.0', '1.2.3', '2.0.0', '3.0.0'],
    range: '^1.0.0',
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient(token='YOUR_API_TOKEN')

run = client.actor('automation-lab/semver-range-checker').call(run_input={
    'versions': ['1.0.0', '1.2.3', '2.0.0', '3.0.0'],
    'range': '^1.0.0',
})

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~semver-range-checker/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "versions": ["1.0.0", "1.2.3", "2.0.0", "3.0.0"],
    "range": "^1.0.0"
  }'
```

***

### Use with AI agents via MCP

Semver Range Checker is available as a tool for AI assistants that support the [Model Context Protocol (MCP)](https://docs.apify.com/platform/integrations/mcp).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com"
        }
    }
}
```

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

#### Example prompts

Once connected, try asking your AI assistant:

- "Use automation-lab/semver-range-checker to check which of these versions satisfy the range `>=2.0.0 <3.0.0`: 1.9.9, 2.0.0, 2.4.1, 3.0.0-rc.1"
- "I have a list of deployed microservice versions — check which ones are NOT covered by our support window `^1.8.0`"
- "Find the latest version from this list that satisfies `~1.4`: 1.4.0, 1.4.5, 1.5.0, 1.6.2"

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

***

### Is it legal to use Semver Range Checker?

Yes — Semver Range Checker performs **pure local computation** on the data you provide as input. It makes no web requests, accesses no external APIs, and collects no third-party data. All processing happens within the Apify Actor runtime on your input.

This actor does not scrape websites, does not process personal data, and is not subject to robots.txt or Terms of Service restrictions. Use it freely in any context.

***

### FAQ

**How fast is it?**
Extremely fast — semver comparison is pure CPU work. A list of 1,000 versions typically completes in under 2 seconds. The 60-second default timeout is more than sufficient for any realistic input.

**How much does it cost for 100 versions?**
About $0.015 — a $0.005 start charge plus 100 × $0.0001 = $0.010 per-version fee. Free plan covers ~47,000 versions with the $5 welcome credit.

**Does it support npm-style ranges like `1.2.x` or `latest`?**
It supports all range formats from the [npm `semver` package](https://github.com/npm/node-semver): caret, tilde, hyphen ranges, comparator sets, wildcards, and `*`. The special tag `latest` is not a valid semver range — use `*` to match any version.

**Why does my prerelease version not match even though it looks like it should?**
By default, prerelease versions (e.g., `2.0.0-beta.1`) are excluded from range matching even when they fall within the numeric bounds of the range. Enable the **Include prerelease versions** option or include a prerelease tag in the range itself (e.g., `>=2.0.0-alpha.0 <2.0.0`).

**Why is `latestSatisfying` null?**
This means none of the versions in your list satisfy the range. Check that your range expression is correct and that you haven't accidentally excluded prerelease versions.

**What happens with invalid version strings?**
Invalid strings (e.g., `"not-a-version"`, `"v2.x"`) produce an output row with `satisfies: null` and an `error` message. They are not charged and do not affect results for valid versions.

***

### Other developer tools from automation-lab

Looking for more developer utilities on Apify Store?

- [**Semver Parser**](https://apify.com/automation-lab/semver-parser) — Parse, validate, sort, and compare semantic version strings with full range checking
- [**HTTP Status Checker**](https://apify.com/automation-lab/http-status-checker) — Bulk-check HTTP status codes and redirect chains for any list of URLs
- [**Curl to Code Converter**](https://apify.com/automation-lab/curl-to-code-converter) — Convert cURL commands to Python, Node.js, PHP, Go, and more
- [**Unicode Text Inspector**](https://apify.com/automation-lab/unicode-text-inspector) — Inspect Unicode codepoints, categories, and hidden characters in text strings
- [**Fake Test Data Generator**](https://apify.com/automation-lab/fake-test-data-generator) — Generate realistic test datasets with names, emails, addresses, and more
- [**Domain Availability Checker**](https://apify.com/automation-lab/domain-availability-checker) — Check WHOIS and registration status for domain names in bulk
- [**Color Contrast Checker (WCAG)**](https://apify.com/automation-lab/color-contrast-checker) — Validate color pairs against WCAG 2.1 AA/AAA accessibility standards
- [**JSON Schema Generator**](https://apify.com/automation-lab/json-schema-generator) — Generate JSON Schema from sample data objects automatically

# Actor input Schema

## `versions` (type: `array`):

List of semver version strings to evaluate (e.g. <code>1.2.3</code>, <code>2.0.0-beta.1</code>). Each item must be a valid semver version.

## `range` (type: `string`):

The semver range to evaluate versions against. Examples: <code>^1.2.0</code>, <code>~2.3</code>, <code>>=1.0.0 <3.0.0</code>, <code>1.x</code>, <code>\*</code>.

## `includePrerelease` (type: `boolean`):

When enabled, prerelease versions (e.g. <code>2.0.0-beta.1</code>) are included in range matching. By default, prereleases are excluded unless the range itself is a prerelease range.

## Actor input object example

```json
{
  "versions": [
    "1.0.0",
    "1.2.3",
    "2.0.0",
    "2.1.0",
    "3.0.0",
    "0.9.9"
  ],
  "range": "^1.0.0",
  "includePrerelease": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "versions": [
        "1.0.0",
        "1.2.3",
        "2.0.0",
        "2.1.0",
        "3.0.0",
        "0.9.9"
    ],
    "range": "^1.0.0"
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/semver-range-checker").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 = {
    "versions": [
        "1.0.0",
        "1.2.3",
        "2.0.0",
        "2.1.0",
        "3.0.0",
        "0.9.9",
    ],
    "range": "^1.0.0",
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/semver-range-checker").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 '{
  "versions": [
    "1.0.0",
    "1.2.3",
    "2.0.0",
    "2.1.0",
    "3.0.0",
    "0.9.9"
  ],
  "range": "^1.0.0"
}' |
apify call automation-lab/semver-range-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/semver-range-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Semver Range Checker",
        "description": "Bulk-check version strings against semver range expressions. Pass versions + a range like ^1.2.0 or >=2.0.0 <3.0.0, get pass/fail per version and the latest satisfying version. Zero proxy cost.",
        "version": "0.1",
        "x-build-id": "Mf7S4czXEuZq0lss3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~semver-range-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-semver-range-checker",
                "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/automation-lab~semver-range-checker/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-semver-range-checker",
                "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/automation-lab~semver-range-checker/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-semver-range-checker",
                "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",
                "required": [
                    "versions",
                    "range"
                ],
                "properties": {
                    "versions": {
                        "title": "📦 Version strings",
                        "type": "array",
                        "description": "List of semver version strings to evaluate (e.g. <code>1.2.3</code>, <code>2.0.0-beta.1</code>). Each item must be a valid semver version.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "range": {
                        "title": "🎯 Semver range expression",
                        "type": "string",
                        "description": "The semver range to evaluate versions against. Examples: <code>^1.2.0</code>, <code>~2.3</code>, <code>&gt;=1.0.0 &lt;3.0.0</code>, <code>1.x</code>, <code>*</code>."
                    },
                    "includePrerelease": {
                        "title": "Include prerelease versions",
                        "type": "boolean",
                        "description": "When enabled, prerelease versions (e.g. <code>2.0.0-beta.1</code>) are included in range matching. By default, prereleases are excluded unless the range itself is a prerelease range.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
