
# REST {/* #rest */}

Comece por [Conectar via API](/docs/pt/connect-api) para criar token API. A URL base REST pública é `https://reconstruct.dev/api/v1/platform`. As rotas abaixo são relativas a ela.

Descubra tipos e ambientes com `GET /capture-options`; não fixe seus IDs no código. As opções usam `view` para tipo (`desktop`/`mobile`) e `implementation` para ambiente. Desktop admite `web`, `web-extension`, `macos`, `windows`, `linux`; mobile, `web`, `ios`, `android`. Verifique `captured` antes de solicitar dados. No MCP os campos se chamam `platform` e `environment`; `view` de página é a chave exata do perfil salvo. Consulte a [seleção MCP](/docs/pt/mcp-tools).

Envie `Authorization: Bearer <token>` em cada solicitação. Os endpoints são:

| Método e caminho | Finalidade |
|---|---|
| `GET /catalogs?pageSize=10&pageToken=...` | Listar catálogos. `pageSize` e `pageToken` são opcionais. |
| `GET /capture-options` | IDs de tipos, rótulos, ambientes, padrões e `requestPlatforms` para envios. Sem autenticação/medição e sem conteúdo de captura. |
| `GET /catalogs/{catalogId}?version=...` | Ler telas, plataformas, idiomas e versões de catálogo publicado. |
| `GET /catalogs/{catalogId}/insights?locale=en&view=desktop&implementation=web` | Ler tecnologias, renderização, famílias tipográficas, estilos, mídia e temas de versão publicada. |

JSON usa campos camelCase. `GET /catalogs` retorna `catalogs` e `nextPageToken` quando há mais resultados. Passe o token como `pageToken` na próxima solicitação. O detalhe contém `catalogId`, `name`, `kind` e `description`.

`locale`, `view` e `implementation` são opcionais. `view` aceita `desktop`/`mobile`; `implementation`, `web`, `web-extension`, `windows`, `macos`, `linux`, `ios` ou `android`. Os detalhes retornam combinações em `platforms[]`; telas têm sua `implementation`. Tecnologias, tipografia e mídia se limitam à combinação e idioma. `technologyInventory: true` identifica inventário de versão quando falta detecção por vista. Capturas web em iPhone emulado continuam `mobile` + `web`. Captura legada sem detalhes usa inventários de fontes/recursos da versão e retorna `pageCount: 0`. Links mantêm a origem. Recursos salvos podem ser lidos pela operação abaixo.

## Filtros e versões de catálogo {/* #catalog-filters-and-versions */}

`ListCatalogs` aceita `query`, `sort` (`newest`, `name-asc`, `name-desc`, `screens`, `versions`), `screens` (`with`/`without`), `versions` (`single`/`multiple`) e filtros repetidos `platforms`, `technologies`, `renderings`, `categories`, `languages`. IDs de filtro combinam vista e implementação, como `desktop:web`. Use IDs de `filters`; opções no mesmo filtro são alternativas e filtros distintos se combinam. Preserve filtros e ordenação ao seguir `nextPageToken`.

`GetCatalog`, `GetCatalogInsights` e `GetCatalogFile` aceitam `version` opcional. Vazio seleciona a captura publicada mais recente. O detalhe retorna a `version` selecionada e todas as `versions[]` publicadas; `latestVersion` e `latestCapturedAt` continuam identificando a mais nova. Passe a versão selecionada às chamadas posteriores de insights e arquivos para manter os dados consistentes. Rascunhos e versões desconhecidas retornam 404.

Insights aceitam `section`: `tech stack`, `typography`, `colors`, `themes` ou `assets` (omita para todos). `colorThemes[]` contém paletas nomeadas. `platforms[].captured` identifica opções disponíveis; `detectedLocales[]` contém idiomas descobertos, `locales[]`, capturados.

## Medições de componentes {/* #component-measurements */}

`componentSizing[]` agrupa medições por tipo semântico. Na aba Componentes, abra um para ver capturas, tamanhos, padding, raio, bordas, sombras e estados. Contêineres genéricos são excluídos.

`dimensionContexts[]` acrescenta propriedade: tipo de componente, propriedade CSS, valor/abreviação original, total e até três amostras. Identificam página, vista, caminho relativo, ID/tag/rótulo de origem, pai conhecido e até três filhos diretos (`childCount` é o total). São IDs brutos daquela página/vista/versão, não IDs MCP renumerados. A vista da amostra é a chave exata, como `laptop`; o filtro é `desktop` ou `mobile`. IDs ausentes são `-1`. Contagens só cobrem capturados; nem elas nem os exemplos prometem cobertura total.

O catálogo apresenta medições no detalhe de cada componente. Padding é interno; margin é externo, não necessariamente distância ao vizinho. Gap pertence ao contêiner; filhos são exemplos, não pares adjacentes medidos. Tamanho descreve o componente. Preserve unidades e abreviações. As ferramentas MCP [`get_spacing` e `get_sizing`](/docs/pt/mcp-tools#component-measurements-with-ownership-context) oferecem contexto paginado ou resumo de página/vista.

A aba Fontes baixa originais como ZIP; JSON de tamanhos e uso por idioma deriva de `textStyles[]` e `fonts[].locales`. São arquivos do cliente, não endpoints `@export` adicionais. Idiomas descobertos (`detectedLocales`) não garantem capturas nesses idiomas.

## Arquivos armazenados e exportações {/* #stored-files-and-exports */}

`GET /catalogs/{catalogId}/files/{path}` retorna JSON `BinaryFileResponse`: `data` é base64 e `contentType` descreve bytes decodificados. Caminhos vêm de `screens[]` (`imagePath`, `fullPagePath`, `sectionPaths[]`, `videoPath`, `interactionVideoPath`). `captureLimited` indica captura incompleta.

A rota aceita `@asset/{hash}`, `@font/{hash}` e `@model/{hash}` para originais; o hash é `SHA-256` da URL de origem ou data URL em UTF-8, hexadecimal minúsculo. Aceita também `@export/assets`, `@export/fonts`, `@export/colors`, `@export/screenshots`, `@export/components`, `@export/languages`, `@export/technologies` e `@export/spacing-sizing` para ZIP. O arquivo de espaçamento/tamanho contém `spacing-sizing.json` com versão, total de páginas, `dimensions` agregadas, `componentSizing` e `dimensionContexts`. Use `version` para arquivos/exportações de captura selecionada. JSON comum de captura não é exposto.

## Operações do usuário chamador {/* #caller-operations */}

| Método e caminho | Finalidade |
|---|---|
| `POST /requests` | Envie `requestType: PRODUCT_REQUEST_TYPE_ADD` com `url` e `subject`, ou `requestType: PRODUCT_REQUEST_TYPE_UPDATE` com `catalogId`. |
| `GET /requests`, `GET /requests/{requestId}` | Paginar envios do usuário e inspecionar decisões, segurança e progresso. |
| `GET /me/appearance`, `PUT /me/appearance` | Ler/atualizar apelido. |
| `GET /me/avatar`, `PUT /me/avatar`, `DELETE /me/avatar` | Ler, enviar (`data` base64) ou remover avatar. |
| `GET /tokens`, `POST /tokens`, `DELETE /tokens/{id}` | Gerenciar tokens pessoais; criação aceita `name`, `scopes` (`api`, `mcp`) e `expiresInDays` (1–365). O segredo retorna uma vez. |
| `GET /me/profile`, `PUT /me/profile` | Ler/atualizar perfil da conta (objeto `profile`). |
| `GET /me/credentials`, `GET /me/sessions`, `DELETE /me/sessions/{id}` | Inspecionar credenciais/sessões e encerrar sessão. |

Operações de conta, aparência, avatar e tokens exigem token de sessão do usuário; tokens API pessoais não as autorizam. Catálogos e solicitações aceitam token pessoal com escopo `api`. `WatchCatalogs` e `WatchRequests` são fluxos gRPC/gRPC-Web, sem rota REST.

## Exemplos {/* #examples */}

- [curl](/docs/pt/api/rest/curl)
- [Python](/docs/pt/api/rest/python)
- [C#](/docs/pt/api/rest/csharp)
- [TypeScript](/docs/pt/api/rest/typescript)
- [Go](/docs/pt/api/rest/go)
- [Rust](/docs/pt/api/rest/rust)
- [Java](/docs/pt/api/rest/java)
- [C++](/docs/pt/api/rest/cpp)

Envios de produto usam `POST /requests`, `GET /requests` e `GET /requests/{request_id}` na mesma base. `requestType: PRODUCT_REQUEST_TYPE_ADD` exige `url` e `subject`; `catalogId` é opcional. Para `PRODUCT_REQUEST_TYPE_UPDATE`, informe `catalogId` existente; o servidor resolve nome e origem. Solicitações persistem e só o dono acessa. São revisadas antes da captura e podem ser aprovadas ou rejeitadas com motivo. Sites inseguros conhecidos são rejeitados automaticamente. REST e gRPC expõem as mesmas operações.

## Dados de interface normalizados {/* #normalized-interface-data */}

O [formato Scene](/docs/pt/data-format) define artefatos independentes de plataforma, com estados, recursos e evidências. A exportação normalizada atual vem do MCP `get_interface_scene`; a API de catálogo não define operação Scene separada.
