# Monitor de Marcas INPI — Alertas da RPI por Processo (`paulovitor18/rpi-inpi-delta-monitor-marcas`) Actor

Monitore marcas no INPI e receba alertas de despachos novos por número de processo ou nome de titular, direto da Revista da Propriedade Industrial (RPI). Só reporta o que mudou desde a última edição processada. Pague por resultado.

- **URL**: https://apify.com/paulovitor18/rpi-inpi-delta-monitor-marcas.md
- **Developed by:** [MoreLock](https://apify.com/paulovitor18) (community)
- **Categories:** Lead generation
- **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

## Monitor de Marcas INPI — Alertas da RPI por Processo

Vigia processos de marca no INPI e avisa só quando sai um despacho novo — sem você abrir a RPI toda semana pra conferir na mão.

### Overview

Duas informações que a RPI publica em cada edição — número de processo e nome do titular — são a chave de tudo aqui. O actor baixa a edição indicada, casa contra a sua lista de vigilância e compara com o histórico da execução anterior. O que já apareceu numa edição passada não volta a ser reportado; só o despacho genuinamente novo entra no dataset.

CNPJ não é campo estruturado nos dados da RPI — o INPI publica nome/razão social do titular, não o documento. Por isso a vigilância aqui é por **número de processo** (exato) ou por **nome de titular** (substring, case-insensitive), nunca por CNPJ.

### Features

- Vigilância por número de processo (casamento exato) ou por nome/razão social de titular (substring).
- Delta real entre execuções: histórico de despachos já vistos persiste num key-value store nomeado, isolado por watch-config.
- Lista de códigos de despacho (IPAS) relevantes é configurável — o padrão cobre os 12 códigos mais frequentes (concessão, indeferimento, exigência, oposição etc.), mas você decide o que dispara alerta.
- Processa uma ou várias edições da RPI numa única execução, sempre da mais antiga pra mais nova, pra o delta fechar certo.
- Edição ainda não publicada ou inexistente não derruba a execução — ela é pulada com aviso, o resto continua.
- Baseline automático na primeira execução de cada watch-config: nada "nasce" como alerta falso.

### Input example

```json
{
  "watchProcessos": ["936582294"],
  "watchTitulares": ["Renova Ltda"],
  "relevantCodes": ["IPAS029", "IPAS158", "IPAS270"],
  "edicoes": [2896],
  "stateStoreName": "minha-carteira-de-marcas"
}
````

### Output example

Saída real de uma execução de teste (edição 2896, processo 936582294):

```json
{
  "numero_processo": "936582294",
  "titular": "RENOVA LTDA EPP",
  "codigo_despacho": "IPAS158",
  "descricao_despacho": "Concessão de registro",
  "classe_nice": ["38"],
  "edicao_rpi": 2896,
  "data_edicao": "07/07/2026",
  "detectado_em": "2026-07-11T02:05:02.707Z"
}
```

Quando não há despacho novo relevante para nenhum processo vigiado, o dataset volta vazio — é a resposta esperada, não uma falha (ver FAQ).

### Tabela de parâmetros

| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `watchProcessos` | array de string | Não\* | Números de processo a vigiar. Casamento exato. |
| `watchTitulares` | array de string | Não\* | Nomes/razão social a vigiar. Casamento por substring, case-insensitive. |
| `relevantCodes` | array de string | Não | Códigos IPAS que geram alerta. Vazio ou omitido cai no padrão de 12 códigos mais frequentes. |
| `edicoes` | array de número | Sim | Números das edições da RPI a processar (ex.: `[2896]`). Esta versão exige edição explícita. |
| `stateStoreName` | string | Não | Nome do key-value store de histórico. Em branco, é derivado automaticamente da watch-config (mesma config sempre cai no mesmo store; configs diferentes ficam isoladas). |

\* Ao menos um de `watchProcessos` ou `watchTitulares` deve estar preenchido, senão nenhum processo é vigiado e a execução não emite nada.

### Tips

- Descubra o número da edição atual na página oficial da RPI antes de rodar — esta versão não resolve "a última edição" sozinha.
- Rode agendado (schedule semanal, terça-feira costuma ser dia de publicação) com o mesmo `stateStoreName` fixo pra manter o delta persistindo.
- Se `watchTitulares` casar centenas de processos numa edição, o log avisa — normalmente sinal de que o termo está genérico demais (ex.: uma palavra comum isolada).
- Trocar `watchProcessos`, `watchTitulares` ou `relevantCodes` muda o hash do store derivado e gera um novo baseline — o histórico antigo não some, só para de ser consultado.

### Use cases

- **Escritório de marcas monitorando a carteira de clientes**: um `stateStoreName` por cliente, alerta automático de exigência ou oposição.
- **Empresa vigiando a própria marca**: saber no dia em que sai concessão, prorrogação ou qualquer despacho crítico, sem depender de aviso do INPI por e-mail.
- **Vigilância concorrencial por titular**: acompanhar os depósitos e despachos de um concorrente específico pelo nome.
- **Escritório jurídico com prazo processual**: despacho que abre prazo de manifestação (oposição, exigência) vira gatilho de tarefa no mesmo dia da publicação.
- **Auditoria de portfólio de marcas**: rodar contra toda a lista de processos da empresa a cada edição pra garantir que nada passou batido.
- **Integração com CRM/ticketing**: o dataset por evento alimenta direto um webhook ou automação (Zapier/Make) que abre um ticket a cada despacho novo.

### FAQ

**Por que não posso vigiar por CNPJ?**
Porque a RPI não publica CNPJ estruturado — só nome/razão social do titular. Vigie por nome (substring) ou pelo número do processo, que é exato.

**O dataset veio vazio, algo quebrou?**
Não necessariamente. Dataset vazio é a resposta correta quando nenhum despacho novo relevante saiu pros processos/titulares vigiados naquela(s) edição(ões). "Sem novidade" é um resultado válido.

**Preciso informar `edicoes` toda vez?**
Sim, nesta versão. Resolução automática da "última edição publicada" não está implementada — confira o número atual na RPI antes de rodar.

**Uma edição errada ou ainda não publicada derruba a execução?**
Não. A edição inválida é pulada com aviso no log (`edicoes_falharam` no resumo final) e o restante processa normalmente.

**O que acontece se eu mudar `relevantCodes` depois de já ter rodado?**
Despachos já vistos continuam no histórico independente do código — só o filtro de EMISSÃO muda. Um código que passou a ser relevante não vai "reaparecer" retroativamente se já tinha sido visto antes com outro filtro; só despachos novos dali pra frente respeitam a lista atualizada.

**Por que dois eventos de cobrança (execução e despacho) em vez de um só por item do dataset?**
Baixar e processar uma edição tem custo fixo (arquivo de dezenas de MB, dezenas de milhares de processos), independente de quantos despachos batem no seu watch. Cobrar só por item deixaria watchlists pequenas rodando no prejuízo. O evento de execução cobre esse custo fixo; o evento por despacho paga o sinal.

### Pricing

Modelo pague-por-evento (PPE), dois eventos:

| Evento | Preço |
|---|---|
| Execução do monitor (`monitor_run`) — 1x por execução, cobre qualquer edição processada | US$ 0,10 |
| Despacho novo detectado (`despacho_detected`) — 1x por item emitido no dataset | US$ 0,50 |

**Exemplo de custo real:** vigiar 1 processo contra 1 edição com 1 despacho novo relevante = US$ 0,10 (execução) + US$ 0,50 (despacho) = **US$ 0,60**. Rodar contra uma edição sem nenhum despacho novo pros seus processos vigiados custa só os **US$ 0,10** da execução — dataset vazio não é bug, é o resultado honesto de "nada mudou" (ver FAQ). A primeira execução de cada watch-config sempre estabelece o baseline: despachos já existentes na primeira leitura viram histórico, não alerta — você não paga por "descobrir" o passado inteiro do processo de uma vez.

### Related Actors

Parte da suíte de dados e compliance de empresas brasileiras:

- [Consulta CNPJ em Lote](https://apify.com/paulovitor18/cnpj-bulk-lookup) — dados cadastrais da Receita Federal.
- [Certidões de Regularidade BR](https://apify.com/paulovitor18/certidoes-regularidade-br) — FGTS e trabalhista por CNPJ.
- [Monitor ESG BR por CNPJ](https://apify.com/paulovitor18/esg-delta-monitor-br) — Lista Suja do trabalho escravo + autos IBAMA.
- [Precatórios TJSP](https://apify.com/paulovitor18/precatorios-tjsp-monitor) — fila de pagamento por entidade.
- [Consulta de Protesto SP](https://apify.com/paulovitor18/protesto-sp-consulta) — CENPROT por CPF/CNPJ.

### Changelog

- **v0.0** (11/07/2026): primeira versão. Vigilância por processo/titular, delta com baseline automático, cobrança PPE por execução + por despacho detectado, edições inválidas não derrubam a execução.

### Contato

Dúvida, sugestão de campo novo ou código IPAS que falta na lista padrão: abra uma issue direto na página do Actor no Apify Store ou mande mensagem pelo perfil [paulovitor18](https://apify.com/paulovitor18).

# Actor input Schema

## `watchProcessos` (type: `array`):

Lista de numeros de processo de marca (RPI/INPI) a monitorar. Casamento exato pelo numero do processo.

## `watchTitulares` (type: `array`):

Lista de nomes/razao social de titulares a monitorar. Casamento por SUBSTRING, case-insensitive. A RPI nao expoe CNPJ estruturado nos dados -- a vigilancia e feita por numero de processo ou por nome do titular, nunca por CNPJ.

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

Codigos IPAS de despacho que geram notificacao. Somente despachos NOVOS (nunca vistos antes para aquele processo) cujo codigo esteja nesta lista sao emitidos no dataset. Default = os 12 codigos IPAS mais frequentes na RPI.

## `edicoes` (type: `array`):

Numeros das edicoes da Revista da Propriedade Industrial a processar nesta execucao (ex.: \[2896]). Sao processadas em ordem CRESCENTE (mais antiga primeiro) para o delta funcionar corretamente, independente da ordem informada aqui. Vazio = nesta build e obrigatorio informar ao menos uma edicao explicita (resolucao automatica da ultima edicao publicada nao esta implementada).

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

Key-value store nomeado onde o historico de despachos por processo e persistido entre execucoes (acumula entre runs). Se DEIXADO EM BRANCO, o nome e derivado automaticamente de um hash da watch-config (watchProcessos + watchTitulares + relevantCodes) -- isso isola por padrao watch-configs diferentes (uma nao contamina o 'ja visto' da outra) e mantem a MESMA watch-config persistindo entre execucoes agendadas. Atencao: trocar watchProcessos, watchTitulares ou relevantCodes muda o hash e gera um NOVO baseline (o historico da config anterior fica intacto no store antigo, mas nao e mais consultado). Informe um nome fixo aqui apenas se quiser controlar/compartilhar o store manualmente.

## Actor input object example

```json
{
  "watchProcessos": [],
  "watchTitulares": [],
  "relevantCodes": [
    "IPAS029",
    "IPAS158",
    "IPAS270",
    "IPAS009",
    "IPAS024",
    "IPAS136",
    "IPAS161",
    "IPAS423",
    "IPAS462",
    "IPAS770",
    "IPAS142",
    "IPAS428"
  ],
  "edicoes": [],
  "stateStoreName": ""
}
```

# Actor output Schema

## `despachos` (type: `string`):

Itens emitidos nesta execucao: um por despacho novo relevante detectado, no formato descrito em dataset\_schema.json.

## `resumo` (type: `string`):

Contadores da execucao: edicoes processadas, edicoes que falharam, processos casados, eventos novos, nome do state store usado.

# 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/rpi-inpi-delta-monitor-marcas").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/rpi-inpi-delta-monitor-marcas").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/rpi-inpi-delta-monitor-marcas --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Monitor de Marcas INPI — Alertas da RPI por Processo",
        "description": "Monitore marcas no INPI e receba alertas de despachos novos por número de processo ou nome de titular, direto da Revista da Propriedade Industrial (RPI). Só reporta o que mudou desde a última edição processada. Pague por resultado.",
        "version": "0.0",
        "x-build-id": "SyCoJKw4SAghO0fL6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/paulovitor18~rpi-inpi-delta-monitor-marcas/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-paulovitor18-rpi-inpi-delta-monitor-marcas",
                "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~rpi-inpi-delta-monitor-marcas/runs": {
            "post": {
                "operationId": "runs-sync-paulovitor18-rpi-inpi-delta-monitor-marcas",
                "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~rpi-inpi-delta-monitor-marcas/run-sync": {
            "post": {
                "operationId": "run-sync-paulovitor18-rpi-inpi-delta-monitor-marcas",
                "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": {
                    "watchProcessos": {
                        "title": "Numeros de processo a vigiar",
                        "type": "array",
                        "description": "Lista de numeros de processo de marca (RPI/INPI) a monitorar. Casamento exato pelo numero do processo.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "watchTitulares": {
                        "title": "Titulares a vigiar",
                        "type": "array",
                        "description": "Lista de nomes/razao social de titulares a monitorar. Casamento por SUBSTRING, case-insensitive. A RPI nao expoe CNPJ estruturado nos dados -- a vigilancia e feita por numero de processo ou por nome do titular, nunca por CNPJ.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "relevantCodes": {
                        "title": "Codigos de despacho (IPAS) relevantes",
                        "type": "array",
                        "description": "Codigos IPAS de despacho que geram notificacao. Somente despachos NOVOS (nunca vistos antes para aquele processo) cujo codigo esteja nesta lista sao emitidos no dataset. Default = os 12 codigos IPAS mais frequentes na RPI.",
                        "default": [
                            "IPAS029",
                            "IPAS158",
                            "IPAS270",
                            "IPAS009",
                            "IPAS024",
                            "IPAS136",
                            "IPAS161",
                            "IPAS423",
                            "IPAS462",
                            "IPAS770",
                            "IPAS142",
                            "IPAS428"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "edicoes": {
                        "title": "Edicoes da RPI a processar",
                        "type": "array",
                        "description": "Numeros das edicoes da Revista da Propriedade Industrial a processar nesta execucao (ex.: [2896]). Sao processadas em ordem CRESCENTE (mais antiga primeiro) para o delta funcionar corretamente, independente da ordem informada aqui. Vazio = nesta build e obrigatorio informar ao menos uma edicao explicita (resolucao automatica da ultima edicao publicada nao esta implementada).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "stateStoreName": {
                        "title": "Nome do armazenamento de estado (delta)",
                        "type": "string",
                        "description": "Key-value store nomeado onde o historico de despachos por processo e persistido entre execucoes (acumula entre runs). Se DEIXADO EM BRANCO, o nome e derivado automaticamente de um hash da watch-config (watchProcessos + watchTitulares + relevantCodes) -- isso isola por padrao watch-configs diferentes (uma nao contamina o 'ja visto' da outra) e mantem a MESMA watch-config persistindo entre execucoes agendadas. Atencao: trocar watchProcessos, watchTitulares ou relevantCodes muda o hash e gera um NOVO baseline (o historico da config anterior fica intacto no store antigo, mas nao e mais consultado). Informe um nome fixo aqui apenas se quiser controlar/compartilhar o store manualmente.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
