Documentação
Referência da API
A referência completa de recursos HTTP, acesso local autenticado, contratos de streaming e clientes gerados a partir de esquemas compartilhados.
Traduzido automaticamente do inglês. Ver o original em inglês
Visão geral
O sidecar é um efeito único HttpApi. Cada endpoint é digitado HttpApiEndpoint com corpos de solicitação e resposta verificados pelo esquema, portanto, esta referência, o SDK gerado e o servidor em execução vêm da mesma declaração em packages/api.
Em 232 caminhos e 35 grupos de recursos.
Formas de solicitação, resposta e erro, cada uma vinculada às operações que a utilizam.
Emitido pelo sidecar em /api/openapi.json; o instantâneo em packages/web é verificado por bun run check:api-reference.
A visualização da web para desktop, o complemento móvel, a ponte de IA e os scripts chamam essas mesmas rotas.
URL base
Não há API CADCAMFUN hospedada. O sidecar roda em sua máquina, liga 127.0.0.1 em uma porta escolhida pelo sistema operacional (ele escuta na porta 0), verifica sua própria porta /api/healthe só então imprime uma linha JSON no stdout. O URL base é http://127.0.0.1:<port> dessa linha.
export CADCAMFUN_TOKEN=dev-token
CADCAMFUN_DATA_DIR=$(mktemp -d) \
CADCAMFUN_MIGRATIONS_DIR=$PWD/packages/db/drizzle \
CADCAMFUN_AI_OFFLINE=true \
bun --no-env-file apps/sidecar/src/main.ts
# stdout: {"event":"ready","port":46709}
export CADCAMFUN_URL=http://127.0.0.1:46709 A porta muda a cada lançamento
ready linha (o shell da área de trabalho faz exatamente isso) em vez de assumir um número fixo. Os logs vão para stderr, então stdout carrega apenas o evento ready ou error. Autenticação
O contrato declara um esquema de segurança, bearer (HTTP Bearer). 324 de 325 operações exigem isso; apenas GET /api/health é público.
| Credencial | Enviado como | Usado por |
|---|---|---|
| Token de lançamento | Authorization: Bearer <token> | A webview da área de trabalho e scripts locais; o valor de CADCAMFUN_TOKEN. |
| Token complementar | Authorization: Bearer <token> | Um telefone emparelhado; acesso mais estreito, veja emparelhamento de companheiro. |
| Sessão da conta | x-session-token | Seleciona a conta atuante no topo do token ao portador; ver identidade abaixo. |
curl -s "$CADCAMFUN_URL/api/health"
curl -s "$CADCAMFUN_URL/api/projects" -H "Authorization: Bearer $CADCAMFUN_TOKEN" Convenções
- Entrada JSON, saída JSON. Os corpos são
application/jsona menos que um cartão diga o contrário: dois uploads multiparte, um webhook de fluxo de octeto, um bootstrap JavaScript, um download zip, um arquivo de plug-in binário e dois fluxos de eventos. - Os IDs de operação estão pontilhados.
projects.get,vcs.commit: a tag do grupo, um ponto, o nome do método usado pelos clientes gerados. - Erros são digitados. As falhas são declaradas por endpoint e carregam um
_tag; ligue-o em vez de analisar mensagens. Em todo o contrato, 401 é declarado em 269 operações, 500 em 264 e 400 em 206. - As âncoras de operação estão estáveis. Cada cartão pode ser vinculado como
#op-<method>-<path>, por exemplo/docs/api/projects#op-get-api-projects-id.
Transmissão
| Caminho | Forma | Carrega |
|---|---|---|
GET /api/projects/{id}/events | SSE | Alterar eventos para um projeto. |
POST /api/ai/chat/stream | SSE | Saída do assistente à medida que é produzida, além de batimentos cardíacos; ver Streaming de IA. |
curl -N "$CADCAMFUN_URL/api/projects/$PROJECT_ID/events" \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" Clientes
@cadcamfun/api/sdk é gerado a partir deste mesmo contrato: cada ID de operação abaixo é um método digitado em CadCam.make(...), recebendo uma entrada simples de parâmetros de caminho e campos de corpo. 259 das 325 operações são geradas; cada cartão mostra sua chamada exata.
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const projects = await client.projects.list()
const created = await client.projects.create({ name: "Bracket" }) Recursos
325 operações em 35 grupos, organizadas de acordo com o que servem.
Essencial
1 endpointsSonda de integridade do processo público com status e carimbo de data/hora.
2 endpointsPreparação autenticada e versão do aplicativo usada por clientes nativos.
2 endpointsEventos enviados pelo servidor no escopo do projeto para clientes ativos.
4 endpointsPreferências compatíveis com JSON e entradas de contexto com listagem de prefixos e operações por chave.
2 endpointsOperações de upload e download com carga específica de endpoint e codificação de resposta.
Projeto
5 endpointsCrie, liste, leia, atualize e remova projetos com verificações de acesso de proprietário e organização.
8 endpointsDesenhos de projetos, componentes, percursos da ferramenta de ferramentas, recursos de biblioteca e visualizações limitadas somente leitura para clientes complementares.
7 endpointsDesenhos de projetos e suas geometrias salvas, metadados e operações de atualização.
5 endpointsComponentes de projeto reutilizáveis e seus dados de design persistentes.
5 endpointsAnalise geometria exata, exporte STEP e inspecione relações de montagem a partir de instantâneos de cena ou desenhos salvos.
8 endpointsRegistros de biblioteca compartilhados e coleções de pesquisa de componentes, materiais e ferramentas.
Fabricação
9 endpointsProgramas de usinagem salvos, associações de desenhos e documentos de fabricação portáteis validados.
2 endpointsListagem e criação de percursos da ferramenta no escopo do projeto com envelopes de resposta específicos de endpoint.
5 endpointsFabricação nativa, geração de código G orientada por configurações, sugestões, análise e verificação de repetição.
8 endpointsVersões de percursos da ferramentas, restauração, descoberta de bibliotecas e comentários de programas encadeados.
21 endpointsEstimativas, solicitações de cálculo, custos de materiais, custos operacionais e registros de desgaste de ferramentas.
Recursos
5 endpointsRegistros de materiais, propriedades de usinagem de aplicativos e acesso a recursos.
5 endpointsAnexos de armazenamento de materiais e importação/exportação JSON para intercâmbio de bibliotecas.
5 endpointsRegistros e dimensões da fresa usados pelos fluxos de trabalho de usinagem de aplicativos.
7 endpointsDados de armazenamento e coleta de ferramentas ou importação/exportação por ferramenta.
7 endpointsRegistros de configuração de máquina, atualizações, remoção e clonagem.
5 endpointsAnexos de armazenamento de máquina e importação/exportação de configuração.
Extensões
52 endpointsProvedores, credenciais, conversas, turnos de streaming, invocação de ação, tokens de ponte, habilidades e recuperação de sessão.
22 endpointsConfirmações, ramificações, restaurações, revisões, espelhamento do GitHub e envio de fluxo de trabalho compatíveis com o Project Git.
16 endpointsRegistro de plug-in, instalação de pacote, configuração, ativação/desativação e ativos de plug-in servidos.
8 endpointsConfiguração de conexão MCP CRUD e solicitações de informações do servidor.
5 endpointsEstado do gateway de desktop, ativação/desativação, emparelhamento de dispositivos e revogação de dispositivos.
Contas
15 endpointsLogin de conta, inscrição, recuperação, verificação, links mágicos, pesquisa de sessão e registro de chave de acesso.
18 endpointsPerfis, recursos de conta, chaves de API, registros de token, senhas e remoção de conta.
5 endpointsListas de organizações e registros de organizações gerenciadas.
4 endpointsListagem de notificações, atualizações de estado de leitura, exclusão e marcação de tudo como lido.
15 endpointsInformações de assinatura, integração de checkout/portal Stripe, manutenção de avaliação e ingestão de webhook assinado.
10 endpointsMétricas de aplicativos, atividades recentes, consultas de uso e solicitações de rastreamento.
10 endpointsRotas de integração de desktop, operações de projeto rastreadas, notificações e registros de assinatura push.
1 endpointsEnvie o registro da lista de espera por meio da API do aplicativo local.
Documento OpenAPI
Download /docs/api/openapi.json (o instantâneo com check-in que este site renderiza) ou busque o documento ativo de um sidecar em execução em /api/openapi.json. Gere novamente o instantâneo com bun run generate:api-reference em packages/web depois de alterar um endpoint.
Contrato e servidor
@cadcamfun/api define esquemas de solicitação e resposta com Effect HttpApi. Ele exporta a raiz Api, registros de domínio, erros de tags e clientes. Manipuladores de solicitações, decisões de autorização, consultas de banco de dados e chamadas de provedor são executadas no sidecar. A importação de um esquema não inicia um servidor.
O sidecar publica seu contrato servido em GET /api/openapi.json. Use esse documento em execução para inspecionar métodos, parâmetros de caminho, cargas úteis e códigos de status do aplicativo ao qual você está conectado. O servidor monta seus grupos em apps/sidecar/src/layers.ts; o contrato compartilhado é montado em packages/api/src/index.ts.
Famílias de recursos
- Projeto: projetos, desenhos, componentes, versões de desenhos, importação/exportação de entidades e análise CAD exata, exportação STEP e análise de montagem.
- Fabricação: percursos da ferramentas e versões, comentários, sugestões de geradores, análise, verificação de repetição, trabalhos de fabricação nativa, materiais, ferramentas, configurações de máquinas, itens de biblioteca e custos de produção.
- Assistente: provedores, credenciais, modelos, sessões, turnos de streaming, controles de sessão, ações, memória do projeto, contexto do espaço de trabalho e aconselhamento sem estado.
- Colaboração: ramificações, confirmações, diferenças, solicitações pull, revisões, espelhos GitHub, arquivos e execuções de fluxo de trabalho, eventos ao vivo e emparelhamento complementar.
- Serviços de aplicativos: usuários, autenticação, organizações, notificações, arquivos, plug-ins, faturamento, análises, lista de espera, configuração de MCP e armazenamento local de valores-chave.
Os grupos de contratos mantêm seus formatos de resposta específicos de endpoint. Um cliente deve decodificar o esquema da operação que ele chama em vez de assumir um único envelope JSON para todo o aplicativo.
Respostas e falhas
Erros comuns de tags são mapeados para HTTP 400 (BadRequest), 401 (Unauthorized), 403 (Forbidden), 404 (NotFound), 405 (MethodNotAllowed), 409 (Conflict) e 500 (InternalError). Seus esquemas declarados carregam um formato legível por humanos message. Alguns grupos usam um envelope com success: false, message, e errors; um pequeno número usa um error campo.
As respostas bem-sucedidas podem ser um registro, uma matriz, um valor anulável ou um envelope. Envelope inclui success, message, e data; EnvelopeOpt torna a mensagem opcional. Os pontos de extremidade de criação declaram explicitamente 201 quando apropriado. Não infira o sucesso apenas de um campo JSON sem verificar o status HTTP e o esquema do endpoint.
A decodificação do esquema valida a entrada do transporte antes da execução do manipulador. A validação de negócios ainda é executada no serviço: uma solicitação estruturalmente válida pode referir-se a um desenho inacessível, conter um artefato de fabricação obsoleto ou solicitar uma operação de filial conflitante.
Use o cliente compartilhado
ApiClient.layer leva um baseUrl e aplicação token. Ele fornece o transporte de busca e o middleware de autorização do cliente. Seus métodos são derivados diretamente de Api, portanto, este cliente também cobre operações omitidas pela geração de código.
import { ApiClient } from "@cadcamfun/api"
import { Effect } from "effect"
const projects = Effect.gen(function* () {
const api = yield* ApiClient
return yield* api.projects.list()
}).pipe(Effect.provide(ApiClient.layer({ baseUrl, token }))) O URL base é o endereço de loopback do sidecar e a porta atribuída. Resolva-o a partir da conexão da área de trabalho, em vez de persistir uma porta entre inicializações. Mantenha os tokens fora de URLs e logs.
Solicitações de design e fabricação
Uso de operações do projeto /api/projects; desenhos e percursos da ferramenta têm suas próprias coleções e rotas detalhadas. POST /api/toolpaths/generate produz código G, dados de programa analisados, avisos e estatísticas de configurações e geometria do gerador. /suggest, /parse, e /verify expor conselhos de parâmetros, interpretação de código G e reprodução de estoque. Esses cálculos não criam um percurso salvo.
POST /api/toolpaths/manufacture aceita um instantâneo CAD versionado e retorna um resultado do kernel com NC, atribuições de ferramentas, dados de corte, reclamações, problemas e um nível de liberação. Salve um documento resultante separadamente através de uma operação de criação ou atualização de percurso. Ver Configurações para validação de evidências durante a persistência.
POST /api/cad/exact/analyze, /step, e /assembly aceitar elementos explícitos ou um identificador de desenho armazenado. A leitura de um desenho armazenado aplica as verificações normais de acesso ao desenho do chamador.
Streaming e recuperação
O fluxo de IA transporta eventos digitados para texto, raciocínio, chamadas e resultados de ferramentas, solicitações de permissão e perguntas, novas tentativas, estado de turno, contexto e conclusão. Os clientes devem consumir eventos de forma incremental e reter o identificador de sessão. O término de uma conexão HTTP não é evidência suficiente de que a virada do modelo foi concluída: o estado da sessão pode ser lido novamente após a reconexão.
Esquemas de eventos de IA residem em packages/api/src/ai-events.ts e packages/ai/src/events.ts. Eventos gerais ao vivo usam o grupo de eventos. Downloads binários, respostas de inicialização de plug-ins JavaScript e corpos de webhook brutos assinados exigem seu próprio manuseio de transporte.
Liste as rotas que a página usa para seus resultados page e limit parâmetros de consulta. Para configurações de máquina, page o padrão é 1, limit o padrão é 20 e é fixado em 1–100, e a resposta carrega pagination com page, limit, total, e totalPages (apps/sidecar/src/http/machine-configs.ts). Verifique na página de referência de cada grupo os parâmetros que ele realmente declara.
SDKs gerados
@cadcamfun/httpapi-codegen reflete grupos HttpApi em metadados de operação e clientes gerados. O gerador de API grava um Promise SDK em packages/api/src/sdk/generated e efetuar clientes para packages/api/src/client/generated. O Promise SDK público é exportado como @cadcamfun/api/sdk.
bun run --filter @cadcamfun/api generate
bun run --filter @cadcamfun/api generate:check Ambos os destinos gerados omitem upload multiparte de perfil, instalação multiparte de plug-in, criação de MCP com vários esquemas de sucesso, atualização de MCP com identificadores de colisão, criação de caminho de ferramenta do projeto com nomes de entrada duplicados e serviço de arquivo de plug-in com cabeçalhos de fluxo. O destino Promise também omite webhooks brutos do Stripe, inicialização do plug-in JavaScript, download de arquivo binário e solicitações de geração/sugestão do gerador. Essas omissões são explícitas em packages/api/scripts/generate-clients.ts; utilizar o cliente contratado ou o transporte bruto adequado para essas operações.
Organização de origem
groups/ contém contratos de recursos. A geometria compartilhada e os esquemas CAM vêm de @cadcamfun/core; cad-exact.ts, cam-kernel.ts, e cam-program.ts descrever resultados avançados de CAD/CAM e documentos portáteis. client.ts constrói o cliente do contrato, enquanto o script de geração possui metas geradas e listas de omissões.
Regras de integração
Reutilize esquemas de contrato nos limites de transporte e mantenha as dependências do banco de dados no sidecar. Introduza um endpoint por meio de seu contrato, manipulador, serviço ou repositório e cobertura HTTP focada em conjunto. Os arquivos gerados são saídas: edite seu contrato ou gerador e gere-os novamente. Uma versão do esquema da API, uma versão do arquivo portátil e uma versão da API do plugin descrevem contratos separados.
Referência de recurso
325 operações entre 232 caminhos e 35 grupos de recursos, com 56 esquemas nomeados. Cada página de recurso lista suas operações e mostra parâmetros de caminho/consulta/cabeçalho declarados, campos obrigatórios e opcionais, valores anuláveis, tipos de conteúdo, status de sucesso e erro e esquemas completos.
Os dados são emitidos de packages/api/src/index.ts, o mesmo contrato HttpApi composto usado pelos clientes e sidecar. As páginas descrevem o contrato verificado; inspecionar o servidor em execução /api/openapi.json se você se conectar a outra versão.
Recurso HTTP
Saúde
Sonda de integridade do processo público com status e carimbo de data/hora.
Recurso HTTP
Sistema
Preparação autenticada e versão do aplicativo usada por clientes nativos.
Recurso HTTP
Projetos
Crie, liste, leia, atualize e remova projetos com verificações de acesso de proprietário e organização.
Recurso HTTP
Espaço de trabalho
Desenhos de projetos, componentes, percursos da ferramenta de ferramentas, recursos de biblioteca e visualizações limitadas somente leitura para clientes complementares.
Recurso HTTP
Desenhos
Desenhos de projetos e suas geometrias salvas, metadados e operações de atualização.
Recurso HTTP
Componentes
Componentes de projeto reutilizáveis e seus dados de design persistentes.
Recurso HTTP
CAD exato
Analise geometria exata, exporte STEP e inspecione relações de montagem a partir de instantâneos de cena ou desenhos salvos.
Recurso HTTP
Percursos da ferramenta
Programas de usinagem salvos, associações de desenhos e documentos de fabricação portáteis validados.
Recurso HTTP
Percursos de projeto
Listagem e criação de percursos da ferramenta no escopo do projeto com envelopes de resposta específicos de endpoint.
Recurso HTTP
Usinagem
Fabricação nativa, geração de código G orientada por configurações, sugestões, análise e verificação de repetição.
Recurso HTTP
Histórico do percurso
Versões de percursos da ferramentas, restauração, descoberta de bibliotecas e comentários de programas encadeados.
Recurso HTTP
Materiais
Registros de materiais, propriedades de usinagem de aplicativos e acesso a recursos.
Recurso HTTP
Armazenamento de materiais
Anexos de armazenamento de materiais e importação/exportação JSON para intercâmbio de bibliotecas.
Recurso HTTP
Ferramentas
Registros e dimensões da fresa usados pelos fluxos de trabalho de usinagem de aplicativos.
Recurso HTTP
Armazenamento de ferramentas
Dados de armazenamento e coleta de ferramentas ou importação/exportação por ferramenta.
Recurso HTTP
Máquinas
Registros de configuração de máquina, atualizações, remoção e clonagem.
Recurso HTTP
Armazenamento de máquinas
Anexos de armazenamento de máquina e importação/exportação de configuração.
Recurso HTTP
Biblioteca
Registros de biblioteca compartilhados e coleções de pesquisa de componentes, materiais e ferramentas.
Recurso HTTP
Custos de produção
Estimativas, solicitações de cálculo, custos de materiais, custos operacionais e registros de desgaste de ferramentas.
Recurso HTTP
Sessões e ações de IA
Provedores, credenciais, conversas, turnos de streaming, invocação de ação, tokens de ponte, habilidades e recuperação de sessão.
Recurso HTTP
Histórico e fluxos de trabalho
Confirmações, ramificações, restaurações, revisões, espelhamento do GitHub e envio de fluxo de trabalho compatíveis com o Project Git.
Recurso HTTP
Eventos do projeto
Eventos enviados pelo servidor no escopo do projeto para clientes ativos.
Recurso HTTP
Emparelhamento de companheiro
Estado do gateway de desktop, ativação/desativação, emparelhamento de dispositivos e revogação de dispositivos.
Recurso HTTP
Plug-ins
Registro de plug-in, instalação de pacote, configuração, ativação/desativação e ativos de plug-in servidos.
Recurso HTTP
Configuração do MCP
Configuração de conexão MCP CRUD e solicitações de informações do servidor.
Recurso HTTP
Arquivos
Operações de upload e download com carga específica de endpoint e codificação de resposta.
Recurso HTTP
Armazenamento de valor-chave
Preferências compatíveis com JSON e entradas de contexto com listagem de prefixos e operações por chave.
Recurso HTTP
Organizações
Listas de organizações e registros de organizações gerenciadas.
Recurso HTTP
Notificações
Listagem de notificações, atualizações de estado de leitura, exclusão e marcação de tudo como lido.
Recurso HTTP
Autenticação
Login de conta, inscrição, recuperação, verificação, links mágicos, pesquisa de sessão e registro de chave de acesso.
Recurso HTTP
Usuários
Perfis, recursos de conta, chaves de API, registros de token, senhas e remoção de conta.
Recurso HTTP
Cobrança
Informações de assinatura, integração de checkout/portal Stripe, manutenção de avaliação e ingestão de webhook assinado.
Recurso HTTP
Análise
Métricas de aplicativos, atividades recentes, consultas de uso e solicitações de rastreamento.
Recurso HTTP
Serviços de aplicativos
Rotas de integração de desktop, operações de projeto rastreadas, notificações e registros de assinatura push.
Recurso HTTP
Lista de espera
Envie o registro da lista de espera por meio da API do aplicativo local.
Baixar OpenAPI JSON · Siga solicitações com respostas capturadas
Convenções de conexão e solicitação
A API é fornecida pelo sidecar local em vez de um endpoint hospedado fixo. Tauri obtém seu URL de loopback selecionado dinamicamente e token de inicialização. Um sidecar iniciado manualmente anuncia sua porta em um evento pronto para JSON. Em vez disso, um cliente móvel emparelhado se conecta por meio do gateway HTTPS configurado.
curl --silent --show-error "$CADCAMFUN_URL/api/projects" \
--header "Authorization: Bearer $CADCAMFUN_TOKEN" Defina ambas as variáveis da conexão real. Os modelos de solicitação nas páginas de recursos usam deliberadamente espaços reservados e arquivos de carga útil. Os campos de transporte opcionais não são promessas de que toda operação de negócios possa omiti-los: a criação do projeto, por exemplo, rejeita um nome ausente em seu manipulador.
| Convenção | Comportamento do cliente |
|---|---|
| Parâmetros de caminho | Substitua o segmento nomeado e codifique seu valor em URL. Trate um identificador como um único segmento. |
| Parâmetros de consulta | Codifique os valores declarados. A paginação e a filtragem são por endpoint; não existe um contrato universal de tamanho de página. |
| Carga útil JSON | Envie o objeto declarado com Content-Type: application/json. A presença obrigatória e a aceitação de nulo são independentes. |
| Carga útil multiparte | Construa partes do formulário com o cliente de upload ou FormData; deixe o transporte escolher seu limite. |
| Resposta binária, JavaScript ou de fluxo | Consumir o tipo de mídia declarado. Não ligue response.json() incondicionalmente. |
| Erros | Verifique o status HTTP e decodifique a forma de falha declarada do endpoint. Os envelopes de erro diferem entre famílias de recursos. |
| Gravações repetidas | Leia o estado após uma operação interrompida antes de reenviar uma mutação. O contrato não fornece um mecanismo universal de chave de idempotência. |
Manutenção de referência gerada
packages/web/script/generate-api-reference.mjs lê o contrato composto usando a implementação de efeito instalada do pacote de API e grava o JSON de referência. O Worker de documentação consome o conteúdo gerado; ele não inicializa o servidor de aplicativos para responder às solicitações de documentação.
bun run generate:api-reference
bun run check:api-reference
bun run check:docs-index A cobertura de recursos é verificada em relação a cada operação declarada. Um grupo recém-adicionado deve receber metadados e navegação voltados para o leitor, e uma solicitação ou resposta alterada deve ser regenerada. Guias manuscritos ainda explicam regras de autorização, efeitos colaterais, configuração de serviço e limites que um esquema HTTP sozinho não consegue expressar.
Receitas de integração
Comece com solicitações HTTP capturadas para ver como a criação do projeto, a validação do negócio, a rejeição do portador, os registros relacionados e a persistência do valor-chave realmente respondem. Usar integração de cliente digitado para reproduzir essas operações com o Promise SDK ou o cliente Effect e lidar com seus canais de falha distintos.
| Integração | Procedimento | Estado-chave a ser retido |
|---|---|---|
| Editor de projeto | Criar, salvar e reabrir trabalho | Identidade do projeto/recurso, dados salvos, semântica de atualização real. |
| Pipeline de fabricação | Gere e persista um trabalho nativo | Solicitação capturada, NC/programa exato, solicitações de liberação, documento portátil correspondente. |
| IU do assistente | Consumir eventos e recuperar sessões | Identidade do projeto/sessão, permissões/perguntas pendentes, estado de giro do terminal. |
| Capacidade externa | Crie um plugin compatível | Manifesto, exportação de módulos, concessão de capacidade, validação de argumentos e resultado da ferramenta. |
| Automação de revisão | Versão e revisão do trabalho do projeto | Confirmação/ref, comparação estrutural, revisões, fluxo de trabalho confirmado, resultados de verificação individuais. |
| Cliente pareado | Habilite e gerencie o acesso ao dispositivo | Endereço do gateway, impressão digital do certificado, token de dispositivo revogável individualmente. |
Essas receitas conectam contratos HTTP ao comportamento real do serviço. Um esquema pode descrever a presença necessária, a codificação e uma forma retornada; seu guia vinculado explica regras de acesso, efeitos de persistência, recuperação suportada e limites que não podem ser inferidos apenas desses tipos.
Operações por grupo de recursos
O contrato atualmente declara 270 operações em 34 grupos, todos sob um único bearer Esquema de segurança HTTP. A única operação sem segurança ao portador é a investigação de saúde pública. A tabela é calculada a partir do documento OpenAPI gerado: operações por grupo, os métodos HTTP usados, quantos caminhos distintos e um caminho representativo.
| Grupo | Marcação | Operações | Métodos | Caminhos | Caminho de exemplo |
|---|---|---|---|---|---|
| Saúde | health | 1 | OBTER 1 | 1 | /api/health |
| Sistema | system | 2 | OBTER 2 | 2 | /health |
| Projetos | projects | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/projects |
| Desenhos | drawings | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/drawings/{id} |
| Componentes | components | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/components/{id} |
| CAD exato | cadExact | 3 | POSTAR 3 | 3 | /api/cad/exact/analyze |
| Percursos da ferramenta | toolpaths | 7 | EXCLUIR 1, OBTER 3, POSTAR 2, COLOCAR 1 | 3 | /api/drawings/{id}/toolpaths |
| Percursos de projeto | projectToolpaths | 2 | OBTER 1, POSTAR 1 | 1 | /api/projects/{id}/toolpaths |
| Usinagem | toolpathGenerator | 5 | POSTAR 5 | 5 | /api/toolpaths/generate |
| Histórico do percurso | toolpathExtras | 8 | EXCLUIR 1, OBTER 3, POSTAR 3, COLOCAR 1 | 5 | /api/toolpaths/library |
| Materiais | materials | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/materials |
| Armazenamento de materiais | materialsStorage | 5 | EXCLUIR 1, OBTER 2, POSTAR 2 | 2 | /api/materials/export-import |
| Ferramentas | tools | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/tools |
| Armazenamento de ferramentas | toolsStorage | 7 | EXCLUIR 1, OBTER 3, POSTAR 3 | 3 | /api/tools/export-import |
| Máquinas | machineConfigs | 6 | EXCLUIR 1, OBTER 2, POSTAR 2, COLOCAR 1 | 3 | /api/machine-configs |
| Armazenamento de máquinas | machineConfigsStorage | 5 | EXCLUIR 1, OBTER 2, POSTAR 2 | 2 | /api/machine-configs/export-import |
| Biblioteca | library | 8 | EXCLUIR 1, OBTER 5, POSTAR 1, COLOCAR 1 | 5 | /api/library |
| Custos de produção | production-costs | 21 | EXCLUIR 4, OBTER 8, POSTAR 5, COLOCAR 4 | 9 | /api/production-costs/estimates |
| Sessões e ações de IA | ai | 34 | EXCLUIR 3, OBTER 8, POSTAR 21, COLOCAR 2 | 32 | /api/ai/actions |
| Histórico e fluxos de trabalho | vcs | 22 | OBTER 10, POSTAR 11, COLOCAR 1 | 19 | /api/projects/{id}/actions/dispatch |
| Eventos do projeto | events | 1 | OBTER 1 | 1 | /api/projects/{id}/events |
| Emparelhamento de companheiro | companion | 5 | EXCLUIR 1, OBTER 1, POSTAR 3 | 5 | /api/companion |
| Plug-ins | plugins | 16 | EXCLUIR 1, GET 8, PATCH 1, POST 4, PUT 2 | 12 | /api/plugins |
| Configuração do MCP | mcp | 8 | EXCLUIR 2, OBTER 2, POSTAR 2, COLOCAR 2 | 3 | /api/mcp/config |
| Arquivos | files | 2 | OBTER 1, POSTAR 1 | 2 | /api/download |
| Armazenamento de valor-chave | kv | 4 | EXCLUIR 1, OBTER 2, COLOCAR 1 | 2 | /api/kv |
| Organizações | organizations | 5 | EXCLUIR 1, OBTER 2, POSTAR 1, COLOCAR 1 | 2 | /api/organizations |
| Notificações | notifications | 4 | EXCLUIR 1, OBTER 1, POSTAR 1, COLOCAR 1 | 3 | /api/notifications |
| Autenticação | auth | 12 | OBTER 1, POSTAR 11 | 12 | /api/auth/forgot-password |
| Usuários | user | 16 | EXCLUIR 2, OBTER 10, POSTAR 2, COLOCAR 2 | 12 | /api/user/api-keys |
| Cobrança | billing | 15 | EXCLUIR 1, OBTER 5, POSTAR 8, COLOCAR 1 | 10 | /api/better-auth-stripe/billing-portal |
| Análise | analytics | 10 | EXCLUIR 1, OBTER 7, POSTAR 2 | 9 | /api/analytics |
| Serviços de aplicativos | misc | 10 | EXCLUIR 2, OBTER 3, POSTAR 4, COLOCAR 1 | 6 | /api/app-control/notify |
| Lista de espera | waitlist | 1 | POSTAR 1 | 1 | /api/waitlist |
Códigos de status em todo o contrato
Contar cada resposta declarada uma vez por operação fornece esta imagem do que um cliente deve estar pronto para decodificar:
| Status | Declarado em | Corpo típico |
|---|---|---|
| 200 | 242 operações | Recurso, matriz, valor anulável ou Envelope |
| 201 | 28 operações | O registro criado (por exemplo POST /api/projects) |
| 204 | operação 1 | Ninguém |
| 400 | 206 operações | BadRequest, EnvBadRequest e variantes específicas da família |
| 401 | 269 operações | Unauthorized (middleware portador) |
| 403 | 101 operações | Forbidden / EnvForbidden |
| 404 | 149 operações | NotFound / EnvNotFound |
| 405 | 30 operações | EnvMethodNotAllowed / KeyedMethodNotAllowed |
| 409 | 29 operações | Conflict / EnvConflict |
| 500 | 264 operações | InternalError, EnvInternal, KeyedInternal e variantes familiares |
| 501, 503 | 1 operação cada | Específico do endpoint |
Cada erro é um erro marcado com Effect, portanto, seu corpo JSON sempre contém um _tag discriminador próximo aos seus campos. Existem três famílias de corpos, herdadas dos manipuladores legados para que os clientes existentes continuem trabalhando:
{ "_tag": "NotFound", "message": "Project not found" } { "_tag": "EnvNotFound", "success": false, "message": "Material not found", "errors": null } { "_tag": "KeyedInternal", "error": "Failed to load components" } Os envelopes de sucesso refletem o envelope de erro: { success: true, message, data }, onde data talvez null. O EnvelopeOpt variante omite message quando o manipulador não forneceu um. Ligar _tag e não na presença de message ou error.
Como uma solicitação é processada
- O roteador corresponde ao método e ao caminho. Rotas desconhecidas nunca alcançam um manipulador.
- O middleware bearer compara o token em tempo constante. Um token ausente ou errado interrompe a solicitação com 401 antes de qualquer decodificação.
- Caminho, consulta, cabeçalhos e corpo são decodificados em relação aos esquemas da operação. Os problemas estruturais tornam-se 400 sem a execução do código comercial.
- O gerenciador resolve a conta atuante, verifica a propriedade ou a associação à organização (403/404) e executa o serviço.
- O resultado é codificado com o esquema de sucesso declarado ou a falha com seu esquema e status de erro marcado.
Respostas que não são JSON
| Operação | Tipo de mídia | Como consumir |
|---|---|---|
POST /api/ai/chat/stream | text/event-stream | Leia de forma incremental; cada data: line é um evento assistente digitado. |
GET /api/projects/{id}/events | text/event-stream | Eventos de projetos ao vivo; reconecte e releia o estado após uma queda. |
GET /api/plugins/bootstrap.js | application/javascript | Carregado pelo host do plugin, não analisado como JSON. |
GET /api/plugins/serve | application/octet-stream | Bytes do arquivo de plug-in. |
GET /api/download | application/zip | Salve como arquivo; usar response.blob() ou transmitir para o disco. |
O Promise SDK gerado rejeita uma resposta de streaming cujo tipo de conteúdo não é text/event-stream com ClientError("UnsupportedContentType")e um único evento SSE maior que 16 MiB com SseEventTooLarge.
Chamando a API sem cliente
type TaggedError = { _tag: string; message?: string; error?: string }
async function call<T>(base: string, token: string, method: string, path: string, body?: unknown): Promise<T> {
const response = await fetch(new URL(path, base), {
method,
headers: {
authorization: `Bearer ${token}`,
...(body === undefined ? {} : { "content-type": "application/json" }),
},
body: body === undefined ? undefined : JSON.stringify(body),
})
if (response.status === 204) return undefined as T
const payload = await response.json()
if (!response.ok) {
const failure = payload as TaggedError
throw new Error(`${response.status} ${failure._tag}: ${failure.message ?? failure.error}`)
}
return payload as T
}
const project = await call<{ id: string; name: string }>(
process.env.CADCAMFUN_URL!, process.env.CADCAMFUN_TOKEN!,
"POST", "/api/projects", { name: "Bracket" },
) Prefira os clientes gerados em TypeScript: eles conhecem o status de sucesso de cada operação e os status de erro declarados, e tratam qualquer resto como UnexpectedStatus em vez de adivinhar.