# Brazil Trademark Watch — INPI/RPI Monitor & Deadline Alerts (`paulovitor18/inpi-trademark-watch`) Actor

Never miss a Brazilian trademark deadline. Get a same-day alert when a new INPI/RPI dispatch — grant, opposition, office action — hits a process or owner you watch. Delta only: new movements, no noise.

- **URL**: https://apify.com/paulovitor18/inpi-trademark-watch.md
- **Developed by:** [MoreLock](https://apify.com/paulovitor18) (community)
- **Categories:** Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 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.

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

## INPI Trademark Watch — Brazil RPI Gazette Monitor

Watch Brazilian trademark processes and get notified only when a new dispatch is published — without opening the INPI's RPI gazette every week to check by hand.

### Overview

An INPI office action or opposition opens a response deadline the day it publishes in the RPI — miss it and the trademark can lapse. This actor watches the gazette for you and flags a new dispatch the same day it hits a process or owner you track. US and EU offices are well served on Apify; Brazil's INPI/RPI was, until now, a manual weekly check.

Every week the Brazilian PTO (INPI) publishes the **RPI — Revista da Propriedade Industrial** (Industrial Property Gazette), the official record where every movement on a trademark application or registration appears: grants, rejections, office actions, oppositions, renewals and more. Two fields the RPI publishes in each edition — the process number and the owner name — are the key to everything here.

The actor downloads the edition you point it at, matches it against your watch list, and compares it with the history from the previous run. Whatever already appeared in a past edition is not reported again; only a genuinely new dispatch enters the dataset. This is a **delta monitor**, not a re-scrape: you pay attention to changes, not to noise.

A structured tax ID (CNPJ) is not a field in the RPI data — the INPI publishes the owner's name / company name, not the document. So watching here is by **process number** (exact) or by **owner name** (case-insensitive substring), never by CNPJ.

Brazil is a top-tier trademark jurisdiction (Madrid Protocol member since 2019, hundreds of thousands of filings a year), so foreign brand owners and their counsel routinely need to track local movements — office actions that open a response deadline, third-party oppositions, and the status of their own portfolio.

### Features

- Watch by process number (exact match) or by owner / company name (substring).
- Real delta between runs: the history of already-seen dispatches persists in a named key-value store, isolated per watch-config.
- The list of relevant IPAS dispatch codes is configurable — the default covers the 12 most frequent codes (grant, rejection, office action, opposition, etc.), but you decide what fires an alert.
- Processes one or several RPI editions in a single run, always oldest to newest, so the delta closes correctly.
- An edition that is not yet published or does not exist does not bring the run down — it is skipped with a warning and the rest continues.
- Automatic baseline on the first run of each watch-config: nothing is "born" as a false alert.
- Official dispatch wording is returned exactly as the INPI publishes it (in Portuguese), the authoritative source text — no lossy machine translation of legal terms.

### Input example

```json
{
  "watchProcesses": ["936582294"],
  "watchOwners": ["Renova Ltda"],
  "relevantCodes": ["IPAS029", "IPAS158", "IPAS270"],
  "editions": [2896],
  "stateStoreName": "my-trademark-portfolio"
}
````

### Output example

Real output of a test run (edition 2896, process 936582294):

```json
{
  "process_number": "936582294",
  "owner": "RENOVA LTDA EPP",
  "dispatch_code": "IPAS158",
  "dispatch_description": "Concessão de registro",
  "nice_class": ["38"],
  "rpi_edition": 2896,
  "edition_date": "07/07/2026",
  "detected_at": "2026-07-13T02:05:02.707Z"
}
```

When there is no new relevant dispatch for any watched process, the dataset comes back empty — that is the expected answer, not a failure (see FAQ).

### Parameters

| Field | Type | Required | Description |
|---|---|---|---|
| `watchProcesses` | array of string | No\* | Process numbers to watch. Exact match. |
| `watchOwners` | array of string | No\* | Owner / company names to watch. Case-insensitive substring match. |
| `relevantCodes` | array of string | No | IPAS codes that fire an alert. Empty or omitted falls back to the default 12 most frequent codes. |
| `editions` | array of number | Yes | Numbers of the RPI editions to process (e.g. `[2896]`). This version requires an explicit edition. |
| `stateStoreName` | string | No | Name of the history key-value store. Blank = derived automatically from the watch-config (same config always falls into the same store; different configs stay isolated). |

\* At least one of `watchProcesses` or `watchOwners` must be filled, otherwise no process is watched and the run emits nothing.

### Tips

- Find the current edition number on the official RPI page before running — this version does not resolve "the latest edition" on its own.
- Run it on a schedule (weekly; Tuesday is the usual publication day) with the same fixed `stateStoreName` to keep the delta persisting.
- If `watchOwners` matches hundreds of processes in one edition, the log warns you — usually a sign the term is too generic (e.g. a single common word).
- Changing `watchProcesses`, `watchOwners` or `relevantCodes` changes the hash of the derived store and creates a new baseline — the old history does not disappear, it just stops being consulted.

### Use cases

- **Trademark firm monitoring a client portfolio**: one `stateStoreName` per client, automatic alert on an office action or opposition.
- **Foreign brand owner tracking its Brazilian filings**: know the day a grant, renewal or any critical dispatch is published, without depending on an INPI email notice.
- **Competitive watch by owner**: follow a specific competitor's filings and dispatches by name.
- **Legal team with a procedural deadline**: a dispatch that opens a response window (opposition, office action) becomes a same-day task the moment it is published.
- **Trademark portfolio audit**: run against the whole list of company processes on every edition to make sure nothing slipped through.
- **CRM / ticketing integration**: the per-event dataset feeds a webhook or automation (Zapier/Make) that opens a ticket for each new dispatch.

### FAQ

**Why can't I watch by CNPJ (tax ID)?**
Because the RPI does not publish a structured CNPJ — only the owner's name / company name. Watch by name (substring) or by process number, which is exact.

**The dataset came back empty, did something break?**
Not necessarily. An empty dataset is the correct answer when no new relevant dispatch was published for the watched processes/owners in that edition(s). "No news" is a valid result.

**Do I have to provide `editions` every time?**
Yes, in this version. Automatic resolution of "the latest published edition" is not implemented — check the current number on the RPI before running.

**Does a wrong or not-yet-published edition bring the run down?**
No. The invalid edition is skipped with a log warning (`editions_failed` in the final summary) and the rest processes normally.

**Why is the dispatch description in Portuguese?**
It is the INPI's official, authoritative wording as published in the gazette. Machine-translating legal dispatch terms would risk changing their meaning, so the actor returns the source text verbatim. The IPAS code is language-neutral and lets you map each dispatch to your own glossary.

**Why two charge events (run and dispatch) instead of one per dataset item?**
Downloading and processing an edition has a fixed cost (a file of tens of MB, tens of thousands of processes), regardless of how many dispatches hit your watch. Charging only per item would leave small watchlists running at a loss. The run event covers that fixed cost; the per-dispatch event pays for the signal.

### Pricing

Pay-per-event (PPE) model, two events:

| Event | Price |
|---|---|
| Monitor run (`monitor_run`) — 1x per run, covers any edition processed | US$ 0.15 |
| New dispatch detected (`dispatch_detected`) — 1x per item emitted in the dataset | US$ 0.75 |

**Real cost example:** watching 1 process against 1 edition with 1 new relevant dispatch = US$ 0.15 (run) + US$ 0.75 (dispatch) = **US$ 0.90**. Running against an edition with no new dispatch for your watched processes costs only the **US$ 0.15** run event — an empty dataset is not a bug, it is the honest result of "nothing changed" (see FAQ). The first run of each watch-config always establishes the baseline: dispatches that already exist on first read become history, not alerts — you do not pay to "discover" the entire past of a process at once.

### Related Actors

Part of a suite of Brazilian company data & compliance actors:

- [Brazil Company Data — Bulk CNPJ Lookup & Enrichment](https://apify.com/paulovitor18/brazil-company-data-enrichment) — registry data from the Receita Federal.
- [Brazil Due Diligence — CNPJ Registry + Reclame Aqui](https://apify.com/paulovitor18/brazil-company-due-diligence) — registry + reputation by CNPJ.
- [Brazil Company Risk Score](https://apify.com/paulovitor18/brazil-company-risk-score) — registry, reputation & protest signal.
- [Brazil ESG Supply-Chain Monitor](https://apify.com/paulovitor18/brazil-esg-supply-chain-monitor) — slave-labor "Dirty List" + IBAMA by CNPJ.

### Changelog

- **v0.0** (13/07/2026): first version. Watch by process/owner, delta with automatic baseline, PPE charging per run + per dispatch detected, invalid editions do not bring the run down.

### Contact

Questions, a suggestion for a new field, or an IPAS code missing from the default list: open an issue on the Actor's page in the Apify Store, or message me through the [paulovitor18](https://apify.com/paulovitor18) profile.

# Actor input Schema

## `watchProcesses` (type: `array`):

List of Brazilian trademark process numbers (INPI/RPI) to monitor. Exact match by process number.

## `watchOwners` (type: `array`):

List of owner names / company names to monitor. Case-insensitive SUBSTRING match. The RPI does not expose a structured tax ID (CNPJ) in the data -- watching is done by process number or by owner name, never by CNPJ.

## `relevantCodes` (type: `array`):

IPAS dispatch codes that trigger a notification. Only NEW dispatches (never seen before for that process) whose code is in this list are emitted to the dataset. Default = the 12 most frequent IPAS codes in the RPI (grant, rejection, requirement, opposition, etc.).

## `editions` (type: `array`):

Numbers of the RPI (Revista da Propriedade Industrial / Industrial Property Gazette) editions to process in this run (e.g. \[2896]). They are processed in ASCENDING order (oldest first) so the delta works correctly, regardless of the order given here. Empty = this build requires at least one explicit edition number (automatic resolution of the latest published edition is not implemented).

## `stateStoreName` (type: `string`):

Named key-value store where the per-process dispatch history is persisted between runs (accumulates across runs). If LEFT BLANK, the name is derived automatically from a hash of the watch-config (watchProcesses + watchOwners + relevantCodes) -- this isolates different watch-configs by default (one does not contaminate the other's 'already seen') and keeps the SAME watch-config persisting across scheduled runs. Note: changing watchProcesses, watchOwners or relevantCodes changes the hash and creates a NEW baseline (the previous config's history stays intact in the old store, but is no longer consulted). Provide a fixed name here only if you want to control/share the store manually.

## Actor input object example

```json
{
  "watchProcesses": [],
  "watchOwners": [],
  "relevantCodes": [
    "IPAS029",
    "IPAS158",
    "IPAS270",
    "IPAS009",
    "IPAS024",
    "IPAS136",
    "IPAS161",
    "IPAS423",
    "IPAS462",
    "IPAS770",
    "IPAS142",
    "IPAS428"
  ],
  "editions": [],
  "stateStoreName": ""
}
```

# Actor output Schema

## `dispatches` (type: `string`):

Items emitted in this run: one per new relevant dispatch detected, in the format described in dataset\_schema.json.

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

Run counters: editions processed, editions failed, processes matched, new events, name of the state store used.

# 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("paulovitor18/inpi-trademark-watch").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("paulovitor18/inpi-trademark-watch").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 paulovitor18/inpi-trademark-watch --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=paulovitor18/inpi-trademark-watch",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Brazil Trademark Watch — INPI/RPI Monitor & Deadline Alerts",
        "description": "Never miss a Brazilian trademark deadline. Get a same-day alert when a new INPI/RPI dispatch — grant, opposition, office action — hits a process or owner you watch. Delta only: new movements, no noise.",
        "version": "0.0",
        "x-build-id": "q0TSx3bLu4y4wIEjI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/paulovitor18~inpi-trademark-watch/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-paulovitor18-inpi-trademark-watch",
                "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/paulovitor18~inpi-trademark-watch/runs": {
            "post": {
                "operationId": "runs-sync-paulovitor18-inpi-trademark-watch",
                "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/paulovitor18~inpi-trademark-watch/run-sync": {
            "post": {
                "operationId": "run-sync-paulovitor18-inpi-trademark-watch",
                "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": {
                    "watchProcesses": {
                        "title": "Process numbers to watch",
                        "type": "array",
                        "description": "List of Brazilian trademark process numbers (INPI/RPI) to monitor. Exact match by process number.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "watchOwners": {
                        "title": "Owners to watch",
                        "type": "array",
                        "description": "List of owner names / company names to monitor. Case-insensitive SUBSTRING match. The RPI does not expose a structured tax ID (CNPJ) in the data -- watching is done by process number or by owner name, never by CNPJ.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "relevantCodes": {
                        "title": "Relevant dispatch codes (IPAS)",
                        "type": "array",
                        "description": "IPAS dispatch codes that trigger a notification. Only NEW dispatches (never seen before for that process) whose code is in this list are emitted to the dataset. Default = the 12 most frequent IPAS codes in the RPI (grant, rejection, requirement, opposition, etc.).",
                        "default": [
                            "IPAS029",
                            "IPAS158",
                            "IPAS270",
                            "IPAS009",
                            "IPAS024",
                            "IPAS136",
                            "IPAS161",
                            "IPAS423",
                            "IPAS462",
                            "IPAS770",
                            "IPAS142",
                            "IPAS428"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "editions": {
                        "title": "RPI editions to process",
                        "type": "array",
                        "description": "Numbers of the RPI (Revista da Propriedade Industrial / Industrial Property Gazette) editions to process in this run (e.g. [2896]). They are processed in ASCENDING order (oldest first) so the delta works correctly, regardless of the order given here. Empty = this build requires at least one explicit edition number (automatic resolution of the latest published edition is not implemented).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "stateStoreName": {
                        "title": "State store name (delta)",
                        "type": "string",
                        "description": "Named key-value store where the per-process dispatch history is persisted between runs (accumulates across runs). If LEFT BLANK, the name is derived automatically from a hash of the watch-config (watchProcesses + watchOwners + relevantCodes) -- this isolates different watch-configs by default (one does not contaminate the other's 'already seen') and keeps the SAME watch-config persisting across scheduled runs. Note: changing watchProcesses, watchOwners or relevantCodes changes the hash and creates a NEW baseline (the previous config's history stays intact in the old store, but is no longer consulted). Provide a fixed name here only if you want to control/share the store manually.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
