Saltar al contenido
CADCAMFUN
Documentos

Documentación

Referencia API

La referencia completa de recursos HTTP, acceso local autenticado, contratos de transmisión y clientes generados a partir de esquemas compartidos.

Traducido automáticamente del inglés. Ver el original en inglés

Descripción general

El sidecar es un solo efecto. HttpApi. Cada punto final es un tipo HttpApiEndpoint con cuerpos de solicitud y respuesta verificados por esquema, por lo que esta referencia, el SDK generado y el servidor en ejecución provienen de la misma declaración en packages/api.

Superficie
325 operaciones

En 232 rutas y 35 grupos de recursos.

Tipos
56 esquemas

Formas de solicitud, respuesta y error, cada una vinculada desde las operaciones que la utilizan.

Contrato
API abierta 3.1.0

Emitido por el sidecar en /api/openapi.json; la instantánea en packages/web es controlado por bun run check:api-reference.

Clientela
una superficie

La vista web de escritorio, el complemento móvil, el puente de IA y los scripts llaman a estas mismas rutas.

URL base

No hay una API CADCAMFUN alojada. El sidecar corre en su máquina, se une 127.0.0.1 en un puerto que el sistema operativo elige (escucha en el puerto 0), verifica su propio /api/health, y solo entonces imprime una línea JSON en stdout. La URL base es http://127.0.0.1:<port> de esa línea.

Inicie un sidecar desechable y lea su puerto.
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

El puerto cambia en cada lanzamiento.

Léelo desde el ready línea (el shell del escritorio hace exactamente eso) en lugar de asumir un número fijo. Los registros van a stderr, por lo que stdout solo lleva el evento de listo o de error.

Autenticación

El contrato declara un esquema de seguridad, bearer (HTTP Bearer). 324 de 325 operaciones lo requieren; solo GET /api/health es público.

CredencialEnviado comoUtilizado por
token de lanzamientoAuthorization: Bearer <token>La vista web de escritorio y los scripts locales; el valor de CADCAMFUN_TOKEN.
Ficha complementariaAuthorization: Bearer <token>Un teléfono emparejado; acceso más estrecho, ver pareja de compañeros.
Sesión de cuentax-session-tokenSelecciona la cuenta activa encima del token al portador; ver identidad abajo.
Público y protegido
curl -s "$CADCAMFUN_URL/api/health"
curl -s "$CADCAMFUN_URL/api/projects" -H "Authorization: Bearer $CADCAMFUN_TOKEN"

Convenciones

  • JSON entra, JSON sale. Los cuerpos son application/json a menos que una tarjeta indique lo contrario: dos cargas de varias partes, un webhook de secuencia de octetos, un arranque de JavaScript, una descarga zip, un archivo de complemento binario y dos secuencias de eventos.
  • Los identificadores de operación están punteados. projects.get, vcs.commit: la etiqueta de grupo, un punto, el nombre del método utilizado por los clientes generados.
  • Los errores se escriben. Las fallas se declaran por punto final y llevan un _tag; actívelo en lugar de analizar mensajes. En todo el contrato, 401 se declara en 269 operaciones, 500 en 264 y 400 en 206.
  • Los anclajes de operación son estables. Cada tarjeta se puede vincular como #op-<method>-<path>, por ejemplo /docs/api/projects#op-get-api-projects-id.

Transmisión

CaminoFormalleva
GET /api/projects/{id}/eventsESSCambiar eventos para un proyecto.
POST /api/ai/chat/streamESSSalida del asistente a medida que se produce, más los latidos del corazón; ver Transmisión de IA.
Seguir los eventos de un proyecto
curl -N "$CADCAMFUN_URL/api/projects/$PROJECT_ID/events" \
  -H "Authorization: Bearer $CADCAMFUN_TOKEN"

Clientela

@cadcamfun/api/sdk se genera a partir de este mismo contrato: cada identificación de operación a continuación es un método escrito en CadCam.make(...), tomando una entrada plana de parámetros de ruta y campos de cuerpo. Se generan 259 de las 325 operaciones; cada tarjeta muestra su llamada exacta.

@cadcamfun/api/sdk
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 operaciones en 35 grupos, organizadas según lo que sirven.

Centro

Diseño

Fabricación

Recursos

Extensiones

Cuentas

Documento OpenAPI

Descargar /docs/api/openapi.json (la instantánea registrada que muestra este sitio) o buscar el documento en vivo desde un sidecar en ejecución en /api/openapi.json. Regenerar la instantánea con bun run generate:api-reference en packages/web después de cambiar un punto final.

Contrato y servidor

@cadcamfun/api define esquemas de solicitud y respuesta con Effect HttpApi. Exporta la raíz. Api, registros de dominio, errores etiquetados y clientes. Los controladores de solicitudes, las decisiones de autorización, las consultas de bases de datos y las llamadas a proveedores se ejecutan en el sidecar. La importación de un esquema no inicia un servidor.

El sidecar publica su contrato cumplido en GET /api/openapi.json. Utilice ese documento en ejecución para inspeccionar métodos, parámetros de ruta, cargas útiles y códigos de estado de la aplicación a la que está conectado. El servidor reúne sus grupos en apps/sidecar/src/layers.ts; el contrato compartido se ensambla en packages/api/src/index.ts.

Autenticación e identidad

Las rutas protegidas requieren Authorization: Bearer <token>. El escritorio recibe un nuevo token de aplicación cuando se inicia su sidecar. GET /api/health es la investigación de salud pública; nativo /health y /version están protegidos. Los tokens portadores de aplicaciones se comparan con una comparación de tiempo seguro.

Un opcional x-session-token lleva una cuenta de sesión JWT. El token al portador admite la aplicación local; la sesión selecciona su cuenta de actuación. Una sesión ausente, caducada, no válida o huérfana recurre al perfil local de la instalación. Luego, los manejadores de recursos verifican la propiedad o el acceso a la organización a través de ayudantes de autorización del repositorio.

Un token de puente con alcance solo admite GET /api/ai/actions y POST /api/ai/actions/invoke. No otorga acceso al proyecto CRUD, configuración de credenciales u otras rutas HTTP. El puente de acción vuelve a comprobar su proyecto y su alcance de lectura/escritura.

Familias de recursos

  • Diseño: proyectos, dibujos, componentes, versiones de dibujos, importación/exportación de entidades y análisis CAD exacto, exportación STEP y análisis de ensamblaje.
  • Fabricación: trayectorias y versiones de herramientas, comentarios, sugerencias de generadores, análisis, verificación de reproducciones, trabajos de fabricación nativos, materiales, herramientas, configuraciones de máquinas, elementos de biblioteca y costos de producción.
  • Asistente: proveedores, credenciales, modelos, sesiones, turnos de transmisión, controles de sesión, acciones, memoria del proyecto, contexto del espacio de trabajo y consejos sin estado.
  • Colaboración: ramas, confirmaciones, diferencias, solicitudes de extracción, revisiones, réplicas de GitHub, archivos y ejecuciones de flujo de trabajo, eventos en vivo y emparejamiento complementario.
  • Servicios de aplicación: usuarios, autenticación, organizaciones, notificaciones, archivos, complementos, facturación, análisis, lista de espera, configuración de MCP y almacenamiento local de valores-clave.

Los grupos de contratos conservan sus formas de respuesta específicas de los terminales. Un cliente debe decodificar el esquema de la operación que llama en lugar de asumir un único sobre JSON para toda la aplicación.

Respuestas y fracasos

Los errores etiquetados comunes se asignan a HTTP 400 (BadRequest), 401 (Unauthorized), 403 (Forbidden), 404 (NotFound), 405 (MethodNotAllowed), 409 (Conflict), y 500 (InternalError). Sus esquemas declarados llevan un formato legible por humanos. message. Algunos grupos usan un sobre con success: false, message, y errors; un pequeño número utiliza un error campo.

Las respuestas exitosas pueden ser un registro, una matriz, un valor que acepta valores NULL o un sobre. Envelope incluye success, message, y data; EnvelopeOpt hace que el mensaje sea opcional. Los puntos finales de creación declaran explícitamente 201 cuando corresponda. No infiera el éxito únicamente a partir de un campo JSON sin verificar el estado HTTP y el esquema del punto final.

La decodificación del esquema valida la entrada del transporte antes de que se ejecute el controlador. La validación comercial aún se ejecuta en el servicio: una solicitud estructuralmente válida puede hacer referencia a un dibujo inaccesible, contener un artefacto de fabricación obsoleto o solicitar una operación de sucursal conflictiva.

Utilice el cliente compartido

ApiClient.layer toma un baseUrl y aplicación token. Proporciona el transporte de recuperación y el middleware de autorización del cliente. Sus métodos se derivan directamente de Api, por lo que este cliente también cubre operaciones omitidas por la generación de código.

Leer proyectos con el cliente Effect
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 })))

La URL base es la dirección de loopback del sidecar y el puerto asignado. Resuélvalo desde la conexión de escritorio, en lugar de conservar un puerto entre los lanzamientos. Mantenga los tokens fuera de las URL y los registros.

Solicitudes de diseño y fabricación.

Uso de operaciones del proyecto /api/projects; los dibujos y las trayectorias de herramientas tienen sus propias colecciones y rutas detalladas. POST /api/toolpaths/generate produce código G, datos de programas analizados, advertencias y estadísticas a partir de la configuración y la geometría del generador. /suggest, /parse, y /verify exponer consejos sobre parámetros, interpretación de códigos G y reproducción de acciones. Estos cálculos no crean una trayectoria guardada.

POST /api/toolpaths/manufacture acepta una instantánea CAD versionada y devuelve un resultado del núcleo con NC, asignaciones de herramientas, datos de corte, reclamaciones, problemas y un nivel de versión. Guarde un documento resultante por separado mediante una operación de creación o actualización de trayectoria. Ver Configuraciones para la validación de evidencia durante la persistencia.

POST /api/cad/exact/analyze, /step, y /assembly aceptar elementos explícitos o un identificador de dibujo almacenado. La lectura de un dibujo almacenado aplica las comprobaciones normales de acceso al dibujo de la persona que llama.

Transmisión y recuperación

El flujo de IA transporta eventos escritos para texto, razonamiento, llamadas y resultados de herramientas, solicitudes de permiso y preguntas, reintentos, estado de turno, contexto y finalización. Los clientes deben consumir eventos de forma incremental y conservar el identificador de sesión. El final de una conexión HTTP no es evidencia suficiente de que finalizó un turno de modelo: el estado de la sesión se puede leer nuevamente después de volver a conectarse.

Los esquemas de eventos de IA viven en packages/api/src/ai-events.ts y packages/ai/src/events.ts. Los eventos generales en vivo utilizan el grupo de eventos. Las descargas binarias, las respuestas de arranque del complemento JavaScript y los cuerpos de webhooks sin formato firmados requieren su propio manejo de transporte.

Enumerar las rutas que utilizan sus resultados page y limit parámetros de consulta. Para configuraciones de máquinas, page por defecto es 1, limit el valor predeterminado es 20 y está fijado en 1–100, y la respuesta lleva pagination con page, limit, total, y totalPages (apps/sidecar/src/http/machine-configs.ts). Consulte la página de referencia de cada grupo para conocer los parámetros que realmente declara.

SDK generados

@cadcamfun/httpapi-codegen refleja los grupos HttpApi en metadatos de operación y clientes generados. El generador de API escribe un SDK de promesa para packages/api/src/sdk/generated y lograr que los clientes packages/api/src/client/generated. El SDK público de Promise se exporta como @cadcamfun/api/sdk.

Regenerar o comprobar la deriva del cliente
bun run --filter @cadcamfun/api generate
bun run --filter @cadcamfun/api generate:check

Ambos objetivos generados omiten la carga de perfiles de varias partes, la instalación de complementos de varias partes, la creación de MCP con múltiples esquemas de éxito, la actualización de MCP con identificadores en colisión, la creación de trayectorias de herramientas del proyecto con nombres de entrada duplicados y el envío de archivos de complementos con encabezados de secuencia. El objetivo de Promise también omite los webhooks sin formato de Stripe, el arranque de JavaScript del complemento, la descarga de archivos binarios y las solicitudes de generación/sugerencia del generador. Estas omisiones son explícitas en packages/api/scripts/generate-clients.ts; utilizar el cliente contratado o el transporte bruto adecuado para dichas operaciones.

Organización fuente

groups/ contiene contratos de recursos. La geometría compartida y los esquemas CAM provienen de @cadcamfun/core; cad-exact.ts, cam-kernel.ts, y cam-program.ts describir resultados CAD/CAM enriquecidos y documentos portátiles. client.ts construye el cliente de contrato, mientras que el script de generación posee los objetivos generados y las listas de omisiones.

Reglas de integración

Reutilice esquemas de contratos en los límites de transporte y mantenga las dependencias de la base de datos en el sidecar. Introduzca un punto final a través de su contrato, controlador, servicio o repositorio y cobertura HTTP enfocada en conjunto. Los archivos generados son salidas: edite su contrato o generador y regenerelos. Una versión de esquema de API, una versión de archivo portátil y una versión de API de complemento describen contratos separados.

Referencia de recursos

325 operaciones al otro lado de 232 rutas y 35 grupos de recursos, con 56 esquemas con nombre. Cada página de recursos enumera sus operaciones y muestra los parámetros de ruta/consulta/encabezado declarados, campos obligatorios y opcionales, valores que aceptan valores NULL, tipos de contenido, estados de éxito y error, y esquemas completos.

Los datos se emiten desde packages/api/src/index.ts, el mismo contrato HttpApi compuesto utilizado por los clientes y el sidecar. Las páginas describen el contrato prestado; inspeccionar el servidor en ejecución /api/openapi.json si te conectas a otra versión.

recurso HTTP

Salud

Sonda de salud de procesos públicos con estado y marca de tiempo.

recurso HTTP

Sistema

Preparación autenticada y versión de la aplicación utilizada por clientes nativos.

recurso HTTP

Proyectos

Cree, enumere, lea, actualice y elimine proyectos con comprobaciones de acceso de propietarios y organizaciones.

recurso HTTP

Espacio de trabajo

Dibujos de proyectos, componentes, trayectorias de herramientas, recursos de biblioteca y vistas previas limitadas de solo lectura para clientes complementarios.

recurso HTTP

Dibujos

Proyectar dibujos y su geometría guardada, metadatos y operaciones de actualización.

recurso HTTP

Componentes

Componentes de proyecto reutilizables y sus datos de diseño persistentes.

recurso HTTP

CAD exacto

Analice la geometría exacta, exporte STEP e inspeccione las relaciones de ensamblaje a partir de instantáneas de escenas o dibujos guardados.

recurso HTTP

Trayectorias

Programas de mecanizado guardados, asociaciones de dibujos y documentos de fabricación portátiles validados.

recurso HTTP

Rutas de herramientas del proyecto

Listado y creación de trayectorias de herramientas con alcance de proyecto con sobres de respuesta específicos de endpoints.

recurso HTTP

Mecanizado

Fabricación nativa, generación de código G basada en configuraciones, sugerencias, análisis y verificación de reproducción.

recurso HTTP

Historial de trayectoria

Versiones de trayectorias de herramientas, restauración, descubrimiento de bibliotecas y comentarios de programas enhebrados.

recurso HTTP

Materiales

Registros de materiales, propiedades de mecanizado de aplicaciones y acceso a recursos.

recurso HTTP

Almacenamiento de materiales

Archivos adjuntos de almacenamiento de materiales e importación/exportación JSON para intercambio de bibliotecas.

recurso HTTP

Herramientas

Registros de corte y dimensiones utilizados por los flujos de trabajo de mecanizado de aplicaciones.

recurso HTTP

Almacenamiento de herramientas

Datos de almacenamiento de herramientas y recopilación o importación/exportación por herramienta.

recurso HTTP

maquinas

Registros de configuración de máquinas, actualizaciones, eliminación y clonación.

recurso HTTP

Almacenamiento de máquinas

Adjuntos de almacenamiento de la máquina e importación/exportación de configuración.

recurso HTTP

Biblioteca

Registros de biblioteca compartidos y colecciones de búsqueda de componentes, materiales y herramientas.

recurso HTTP

Costos de producción

Estimaciones, solicitudes de cálculo, costos de materiales, costos de operación y registros de desgaste de herramientas.

recurso HTTP

Sesiones y acciones de IA

Proveedores, credenciales, conversaciones, turnos de streaming, invocación de acciones, tokens puente, habilidades y recuperación de sesiones.

recurso HTTP

Historia y flujos de trabajo

Confirmaciones, bifurcaciones, restauraciones, revisiones, duplicación de GitHub y distribución de flujo de trabajo compatibles con Project Git.

recurso HTTP

Eventos del proyecto

Eventos enviados por el servidor con ámbito de proyecto para clientes en vivo.

recurso HTTP

Maridaje de acompañantes

Estado de la puerta de enlace del escritorio, activación/desactivación, emparejamiento de dispositivos y revocación de dispositivos.

recurso HTTP

Complementos

Registro de complementos, instalación de paquetes, configuración, activación/desactivación y activos de complementos servidos.

recurso HTTP

Configuración del MCP

Configuración de conexión MCP CRUD y solicitudes de información del servidor.

recurso HTTP

Archivos

Operaciones de carga y descarga con codificación de respuesta y carga útil específica del terminal.

recurso HTTP

Almacenamiento de valores clave

Entradas de contexto y preferencias compatibles con JSON con listado de prefijos y operaciones por clave.

recurso HTTP

Organizaciones

Listas de organizaciones y registros de organizaciones administradas.

recurso HTTP

Notificaciones

Listado de notificaciones, actualizaciones de estado de lectura, eliminación y marcar todo como leído.

recurso HTTP

Autenticación

Inicio de sesión de cuenta, registro, recuperación, verificación, enlaces mágicos, búsqueda de sesión y registro de clave de acceso.

recurso HTTP

Usuarios

Perfiles, recursos de cuentas, claves API, registros de tokens, contraseñas y eliminación de cuentas.

recurso HTTP

Facturación

Información de suscripción, integración del portal/pago de Stripe, mantenimiento de prueba e ingesta de webhooks firmados.

recurso HTTP

Analítica

Métricas de aplicaciones, actividad reciente, consultas de uso y solicitudes de seguimiento.

recurso HTTP

Servicios de aplicaciones

Rutas de integración de escritorio, seguimiento de operaciones de proyectos, notificaciones y registros de suscripción push.

recurso HTTP

Lista de espera

Envíe el registro en la lista de espera a través de la API de la aplicación local.

Descargar OpenAPI JSON · Siga las solicitudes con respuestas capturadas

Convenciones de conexión y solicitud

La API la proporciona el sidecar local en lugar de un punto final alojado fijo. Tauri obtiene su URL de loopback seleccionada dinámicamente y su token de lanzamiento. Un sidecar iniciado manualmente anuncia su puerto en un evento listo para JSON. En su lugar, un cliente móvil emparejado se conecta a través de su puerta de enlace HTTPS configurada.

Lea con su conexión sidecar actual
curl --silent --show-error "$CADCAMFUN_URL/api/projects" \
  --header "Authorization: Bearer $CADCAMFUN_TOKEN"

Establezca ambas variables desde la conexión real. Las plantillas de solicitud en páginas de recursos utilizan deliberadamente marcadores de posición y archivos de carga útil. Los campos de transporte opcionales no son promesas de que todas las operaciones comerciales puedan omitirlos: la creación de un proyecto, por ejemplo, rechaza un nombre que falta en su controlador.

ConvenciónComportamiento del cliente
Parámetros de rutaReemplace el segmento nombrado y codifique en URL su valor. Trate un identificador como un segmento único.
Parámetros de consultaCodifica los valores declarados. La paginación y el filtrado son por punto final; No existe un contrato universal de tamaño de página.
Carga útil JSONEnviar el objeto declarado con Content-Type: application/json. La presencia requerida y la aceptación de nulo son independientes.
Carga útil multiparteCree partes de formulario con el cliente de carga o FormData; Dejemos que el transporte elija su límite.
Respuesta binaria, JavaScript o secuenciaConsumir el tipo de medio declarado. no llames response.json() incondicionalmente.
ErroresVerifique el estado de HTTP y decodifique la forma de falla declarada del punto final. Los sobres de error difieren entre las familias de recursos.
Escrituras reintentadasLea el estado después de una operación interrumpida antes de volver a enviar una mutación. El contrato no proporciona un mecanismo universal de clave de idempotencia.

Mantenimiento de referencia generado

packages/web/script/generate-api-reference.mjs lee el contrato compuesto utilizando la implementación Effect instalada del paquete API y escribe el JSON de referencia. El trabajador de documentación consume el contenido generado; no inicializa el servidor de aplicaciones para responder solicitudes de documentación.

Desde paquetes/web
bun run generate:api-reference
bun run check:api-reference
bun run check:docs-index

La cobertura de recursos se compara con cada operación declarada. Un grupo recién agregado debe recibir metadatos y navegación de cara al lector, y se debe volver a generar una solicitud o respuesta modificada. Las guías escritas a mano todavía explican las reglas de autorización, los efectos secundarios, la configuración del servicio y los límites que un esquema HTTP por sí solo no puede expresar.

Recetas de integración

Empezar con solicitudes HTTP capturadas para ver cómo responden realmente la creación de proyectos, la validación empresarial, el rechazo del portador, los registros relacionados y la persistencia del valor clave. Usar integración de cliente mecanografiada para reproducir esas operaciones con Promise SDK o el cliente Effect y manejar sus distintos canales de falla.

IntegraciónProcedimientoEstado clave para retener
editor de proyectosCrear, guardar y volver a abrir el trabajoIdentidad del proyecto/recurso, datos guardados, semántica de actualización real.
Tubería de fabricaciónGenerar y conservar un trabajo nativoSolicitud capturada, NC/programa exacto, reclamaciones de liberación, documento portátil coincidente.
Interfaz de usuario del asistenteConsumir eventos y recuperar sesiones.Identidad del proyecto/sesión, permisos/preguntas pendientes, estado de giro del terminal.
Capacidad externaCrear un complemento compatibleManifiesto, exportaciones de módulos, concesión de capacidades, validación de argumentos y resultado de herramientas.
Automatización de reseñasVersionar y revisar el trabajo del proyecto.Confirmación/referencia, diferencias estructurales, revisiones, flujo de trabajo comprometido, resultados de verificación individuales.
Cliente emparejadoHabilitar y administrar el acceso al dispositivoDirección de puerta de enlace, huella digital de certificado, token de dispositivo revocable individualmente.

Estas recetas conectan los contratos HTTP con el comportamiento real del servicio. Un esquema puede describir la presencia requerida, la codificación y una forma devuelta; su guía vinculada explica las reglas de acceso, los efectos de persistencia, la recuperación admitida y los límites que no se pueden inferir únicamente de esos tipos.

Operaciones por grupo de recursos

El contrato actualmente declara 270 operaciones en 34 grupos, todos bajo un mismo bearer Esquema de seguridad HTTP. La única operación sin seguridad al portador es la investigación de salud pública. La tabla se calcula a partir del documento OpenAPI generado: operaciones por grupo, los métodos HTTP utilizados, cuántas rutas distintas y una ruta representativa.

GrupoEtiquetaoperacionesMétodosCaminosRuta de ejemplo
Saludhealth1OBTENER 11/api/health
Sistemasystem2OBTENER 22/health
Proyectosprojects5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/projects
Dibujosdrawings5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/drawings/{id}
Componentescomponents5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/components/{id}
CAD exactocadExact3PUBLICAR 33/api/cad/exact/analyze
Trayectoriastoolpaths7ELIMINAR 1, OBTENER 3, PUBLICAR 2, PONER 13/api/drawings/{id}/toolpaths
Rutas de herramientas del proyectoprojectToolpaths2OBTENER 1, PUBLICAR 11/api/projects/{id}/toolpaths
MecanizadotoolpathGenerator5PUBLICAR 55/api/toolpaths/generate
Historial de trayectoriatoolpathExtras8ELIMINAR 1, OBTENER 3, PUBLICAR 3, PONER 15/api/toolpaths/library
Materialesmaterials5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/materials
Almacenamiento de materialesmaterialsStorage5ELIMINAR 1, OBTENER 2, PUBLICAR 22/api/materials/export-import
Herramientastools5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/tools
Almacenamiento de herramientastoolsStorage7ELIMINAR 1, OBTENER 3, PUBLICAR 33/api/tools/export-import
maquinasmachineConfigs6ELIMINAR 1, OBTENER 2, PUBLICAR 2, PONER 13/api/machine-configs
Almacenamiento de máquinasmachineConfigsStorage5ELIMINAR 1, OBTENER 2, PUBLICAR 22/api/machine-configs/export-import
Bibliotecalibrary8ELIMINAR 1, OBTENER 5, PUBLICAR 1, PONER 15/api/library
Costos de producciónproduction-costs21ELIMINAR 4, OBTENER 8, PUBLICAR 5, PONER 49/api/production-costs/estimates
Sesiones y acciones de IAai34ELIMINAR 3, OBTENER 8, PUBLICAR 21, PONER 232/api/ai/actions
Historia y flujos de trabajovcs22OBTENER 10, PUBLICAR 11, PONER 119/api/projects/{id}/actions/dispatch
Eventos del proyectoevents1OBTENER 11/api/projects/{id}/events
Maridaje de acompañantescompanion5ELIMINAR 1, OBTENER 1, PUBLICAR 35/api/companion
Complementosplugins16ELIMINAR 1, OBTENER 8, PARCHE 1, PUBLICAR 4, PONER 212/api/plugins
Configuración del MCPmcp8ELIMINAR 2, OBTENER 2, PUBLICAR 2, PONER 23/api/mcp/config
Archivosfiles2OBTENER 1, PUBLICAR 12/api/download
Almacenamiento de valores clavekv4ELIMINAR 1, OBTENER 2, PONER 12/api/kv
Organizacionesorganizations5ELIMINAR 1, OBTENER 2, PUBLICAR 1, PONER 12/api/organizations
Notificacionesnotifications4ELIMINAR 1, OBTENER 1, PUBLICAR 1, PONER 13/api/notifications
Autenticaciónauth12OBTENER 1, PUBLICAR 1112/api/auth/forgot-password
Usuariosuser16ELIMINAR 2, OBTENER 10, PUBLICAR 2, PONER 212/api/user/api-keys
Facturaciónbilling15ELIMINAR 1, OBTENER 5, PUBLICAR 8, PONER 110/api/better-auth-stripe/billing-portal
Analíticaanalytics10ELIMINAR 1, OBTENER 7, PUBLICAR 29/api/analytics
Servicios de aplicacionesmisc10ELIMINAR 2, OBTENER 3, PUBLICAR 4, PONER 16/api/app-control/notify
Lista de esperawaitlist1PUBLICAR 11/api/waitlist

Códigos de estado en todo el contrato

Contar cada respuesta declarada una vez por operación da esta imagen de lo que un cliente debe estar listo para decodificar:

EstadoDeclarado elcuerpo tipico
200242 operacionesRecurso, matriz, valor que acepta valores NULL o Envelope
20128 operacionesEl registro creado (por ejemplo POST /api/projects)
2041 operaciónNadie
400206 operacionesBadRequest, EnvBadRequest y variantes específicas de la familia
401269 operacionesUnauthorized (middleware portador)
403101 operacionesForbidden / EnvForbidden
404149 operacionesNotFound / EnvNotFound
40530 operacionesEnvMethodNotAllowed / KeyedMethodNotAllowed
40929 operacionesConflict / EnvConflict
500264 operacionesInternalError, EnvInternal, KeyedInternal y variantes familiares
501, 5031 operación cada unaEspecífico del terminal

Cada error es un error etiquetado como Efecto, por lo que su cuerpo JSON siempre contiene un _tag discriminador junto a sus campos. Hay tres familias de cuerpos, heredados de los controladores heredados para que los clientes existentes sigan trabajando:

Error simple (solo mensaje)
{ "_tag": "NotFound", "message": "Project not found" }
error de sobre
{ "_tag": "EnvNotFound", "success": false, "message": "Material not found", "errors": null }
Error de clave (algunas rutas de biblioteca)
{ "_tag": "KeyedInternal", "error": "Failed to load components" }

Los sobres de éxito reflejan el sobre de error: { success: true, message, data }, dónde data tal vez null. El EnvelopeOpt variante omite message cuando el responsable no la haya facilitado. Encender _tag en lugar de en la presencia de message o error.

Cómo se procesa una solicitud

clientebuscar / SDK coincidencia de rutamétodo + ruta cheque al portador401 No autorizado decodificar esquema400 en entrada incorrecta entrenador de animalesacceso + lógica codificaréxito / _etiqueta x-session-token elige la cuenta de actuación; ausente o inválido vuelve al perfil local
  1. El enrutador coincide con el método y la ruta. Las rutas desconocidas nunca llegan a un controlador.
  2. El middleware portador compara el token en tiempo constante. Un token faltante o incorrecto detiene la solicitud con 401 antes de cualquier decodificación.
  3. La ruta, la consulta, los encabezados y el cuerpo se decodifican según los esquemas de la operación. Los problemas estructurales se vuelven 400 sin ejecutar código comercial.
  4. El controlador resuelve la cuenta actual, verifica la propiedad o la membresía de la organización (403/404) y ejecuta el servicio.
  5. El resultado se codifica con el esquema de éxito declarado, o el fracaso con su esquema de error etiquetado y su estado.

Respuestas que no son JSON

OperaciónTipo de mediocomo consumir
POST /api/ai/chat/streamtext/event-streamLeer incrementalmente; cada data: la línea es un evento asistente escrito.
GET /api/projects/{id}/eventstext/event-streamEventos de proyectos en vivo; reconectar y volver a leer el estado después de una caída.
GET /api/plugins/bootstrap.jsapplication/javascriptCargado por el host del complemento, no analizado como JSON.
GET /api/plugins/serveapplication/octet-streamBytes de archivo de complemento.
GET /api/downloadapplication/zipGuardar como un archivo; usar response.blob() o transmitir al disco.

El SDK de Promise generado rechaza una respuesta de transmisión cuyo tipo de contenido no sea text/event-stream con ClientError("UnsupportedContentType")y un único evento SSE mayor que 16 MiB con SseEventTooLarge.

Llamar a la API sin un cliente

Envoltorio de recuperación con tipo mínimo
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" },
)

Prefiere los clientes generados en TypeScript: conocen el estado de éxito de cada operación y los estados de error declarados, y tratan cualquier otra cosa como UnexpectedStatus en lugar de adivinar.

En 3D

Grupos de API por tamaño Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
Every API group as a column, height = operations counted from the generated OpenAPI document (270 in total). Rows are the six sidebar categories; ai (34), history (22) and costs (21) are the largest groups.