Saltar al contenido
CADCAMFUN
Documentos

Documentación

Complementos

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

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

Área de pruebas

Envíe estas solicitudes a su propio sidecar en funcionamiento. Los valores permanecen en este navegador.

No conectado
¿Cómo funciona esto?

El sidecar escucha en un puerto loopback elegido al inicio y lo imprime en su ready línea; use esa URL y el CADCAMFUN_TOKEN se empezó con. Las solicitudes van directamente desde esta página a esa dirección.

El sidecar envía encabezados CORS solo a los orígenes Tauri y a http://localhost o http://127.0.0.1 en cualquier puerto. Desde los documentos alojados, el navegador bloquea la respuesta, así que ejecute los documentos localmente (bun run dev en packages/web) para usar el área de juegos o copiar la solicitud como curl. Para experimentar sin tocar datos reales, inicie el sidecar con CADCAMFUN_DATA_DIR apuntado a un directorio desechable - ver el tutorial de la API.

Operaciones

16 endpoints en el plugins grupo, generado a partir del propio sidecar Documento OpenAPI. Las operaciones protegidas toman Authorization: Bearer $CADCAMFUN_TOKEN; ver autenticación. El comportamiento y los límites están en la guía del subsistema.

correo /api/plugins/install plugins.install
conseguir /api/plugins/bootstrap.js plugins.bootstrap
conseguir /api/plugins/serve plugins.serve
conseguir /api/plugins plugins.list
conseguir /api/plugins/{id} plugins.get
borrar /api/plugins/{id} plugins.uninstall
conseguir /api/plugins/{id}/config plugins.getConfig
correo /api/plugins/{id}/config plugins.setConfig
poner /api/plugins/{id}/config plugins.updateConfig
correo /api/plugins/{id}/enable plugins.enable
correo /api/plugins/{id}/disable plugins.disable
poner /api/plugins/{id}/update plugins.update
parche /api/plugins/{id}/update plugins.patch
conseguir /api/plugins/registry plugins.registry
conseguir /api/plugins/registry/{id} plugins.registryGet
conseguir /api/plugins/registry/search plugins.registrySearch
Operaciones de complementos en 3D Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
Un bloque por operación (16), apilado por sección de recursos de esta página y coloreado por método: GET verde, POST naranja, PUT azul, PATCH violeta, DELETE rojo. Generado a partir del documento OpenAPI en el momento de la compilación.

/api/plugins/install

correo /api/plugins/install # plugins.install

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · multipart/form-data
{
  file: string[]
}
Respuestas
201 objeto application/json
{
  message: string
  plugin: {
    id: string
    manifest: {
      id: string
      name: string
      version: string
      description: string
      author: string
      repository?: string | null
      license?: string | null
      icon?: string | null
      main: string
      engines: {
        cadcam: string
      }
      permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
      dependencies?: {
        [key: string]: string
      } | null
      contributes?: {
        sidebar?: {
          title: string
          icon: string
          entry: string
        } | null
        commands?: Array<{
          id: string
          title: string
          icon?: string | null
          keybinding?: string | null
        }> | null
        menus?: {
          toolbar?: Array<{
            command: string
            group?: string | null
            when?: string | null
            priority?: number | "Infinity" | "-Infinity" | "NaN" | null
          }> | null
          contextMenu?: Array<{
            command: string
            group?: string | null
        } | null
        propertyPanel?: Array<{
          id: string
          title: string
          entry: string
          appliesTo?: string | null
        themes?: Array<{
          id: string
          label: string
          path: string
        }> | null
      } | null
      configuration?: {
        properties: {
          [key: string]: {
            type: string
            default?: unknown | null
            description?: string | null
            enum?: unknown[] | null
            minimum?: number | "Infinity" | "-Infinity" | "NaN" | null
            maximum?: number | null
            pattern?: string | null
          }
        }
      } | null
    }
    state: "none" | "installed" | "enabled" | "disabled" | "loaded" | "activated" | "deactivated" | "error"
    enabled: boolean
    version: string
    installedAt: string
    updatedAt: string
    config?: object | null
    configurationId?: string | null
    errorCount: number | "Infinity" | "-Infinity" | "NaN"
    lastError?: string | null
  }
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
409 PluginConflictEncoded application/json
PluginConflictEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
buscar ejemplo
plugins.install
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/plugins/install`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
ENVIAR /api/plugins/instalar
curl --request POST "${CADCAMFUN_URL}/api/plugins/install" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: multipart/form-data" \
  --data-binary @request-body
Pruébalo

Esta operación requiere datos multiparte/formulario; Utilice el ejemplo curl o fetch.

/api/plugins/bootstrap.js

conseguir /api/plugins/bootstrap.js # plugins.bootstrap

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación consulta cadena requerido
Respuestas
200 cadena application/javascript
string
400 cadena application/javascript
string
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 cadena application/javascript
string
500 cadena application/javascript
string
buscar ejemplo
plugins.bootstrap
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/plugins/bootstrap.js`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
OBTENER /api/plugins/bootstrap.js
curl --request GET "${CADCAMFUN_URL}/api/plugins/bootstrap.js?id=<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

/api/plugins/serve

conseguir /api/plugins/serve # plugins.serve

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación consulta cadena requerido
archivo consulta cadena requerido
Respuestas
200 cadena application/octet-stream
string
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
buscar ejemplo
plugins.serve
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/plugins/serve`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
OBTENER /api/plugins/serve
curl --request GET "${CADCAMFUN_URL}/api/plugins/serve?id=<id>&file=<file>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

/api/plugins

conseguir /api/plugins # plugins.list

Requiere Authorization: Bearer <token>.

Respuestas
200 Matriz<objeto> application/json
Array<{
  id: string
  manifest: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | "Infinity" | "-Infinity" | "NaN" | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  }
  state: "none" | "installed" | "enabled" | "disabled" | "loaded" | "activated" | "deactivated" | "error"
  enabled: boolean
  version: string
  installedAt: string
  updatedAt: string
  config?: object | null
  configurationId?: string | null
  errorCount: number | "Infinity" | "-Infinity" | "NaN"
  lastError?: string | null
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de respuesta capturado · 200
OBTENER /api/complementos
[]
Ejemplo de SDK
plugins.list
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.plugins.list()
curl
OBTENER /api/complementos
curl --request GET "${CADCAMFUN_URL}/api/plugins" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
conseguir /api/plugins/{id} # plugins.get

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  id: string
  manifest: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | "Infinity" | "-Infinity" | "NaN" | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  }
  state: "none" | "installed" | "enabled" | "disabled" | "loaded" | "activated" | "deactivated" | "error"
  enabled: boolean
  version: string
  installedAt: string
  updatedAt: string
  config?: object | null
  configurationId?: string | null
  errorCount: number | "Infinity" | "-Infinity" | "NaN"
  lastError?: string | null
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.get
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsGetInput
const result = await client.plugins.get({
  id: "<id>"
})
curl
OBTENER /api/plugins/{id}
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
borrar /api/plugins/{id} # plugins.uninstall

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.uninstall
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsUninstallInput
const result = await client.plugins.uninstall({
  id: "<id>"
})
curl
ELIMINAR /api/plugins/{id}
curl --request DELETE "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
conseguir /api/plugins/{id}/config # plugins.getConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
object
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.getConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsGetConfigInput
const result = await client.plugins.getConfig({
  id: "<id>"
})
curl
OBTENER /api/plugins/{id}/config
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
correo /api/plugins/{id}/config # plugins.setConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Cuerpo de la solicitud · requerido · aplicación/json
object
Respuestas
200 objeto application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.setConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsSetConfigInput
const result = await client.plugins.setConfig({
  id: "<id>"
})
curl
ENVIAR /api/plugins/{id}/config
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
poner /api/plugins/{id}/config # plugins.updateConfig

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Cuerpo de la solicitud · requerido · aplicación/json
object
Respuestas
200 objeto application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.updateConfig
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsUpdateConfigInput
const result = await client.plugins.updateConfig({
  id: "<id>"
})
curl
PUT /api/plugins/{id}/config
curl --request PUT "${CADCAMFUN_URL}/api/plugins/<id>/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
correo /api/plugins/{id}/enable # plugins.enable

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.enable
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsEnableInput
const result = await client.plugins.enable({
  id: "<id>"
})
curl
POST /api/plugins/{id}/enable
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/enable" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
correo /api/plugins/{id}/disable # plugins.disable

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.disable
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsDisableInput
const result = await client.plugins.disable({
  id: "<id>"
})
curl
POST /api/plugins/{id}/disable
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/disable" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
poner /api/plugins/{id}/update # plugins.update

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Cuerpo de la solicitud · requerido · aplicación/json
{
  manifest?: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  } | null
  config?: object | null
}
Respuestas
200 objeto application/json
{
  id: string
  manifest: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | "Infinity" | "-Infinity" | "NaN" | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  }
  state: "none" | "installed" | "enabled" | "disabled" | "loaded" | "activated" | "deactivated" | "error"
  enabled: boolean
  version: string
  installedAt: string
  updatedAt: string
  config?: object | null
  configurationId?: string | null
  errorCount: number | "Infinity" | "-Infinity" | "NaN"
  lastError?: string | null
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.update
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsUpdateInput
const result = await client.plugins.update({
  id: "<id>",
  manifest: {
    id: "",
    name: "",
    version: "",
    description: "",
    author: "",
    main: "",
    engines: {
      cadcam: ""
    },
    permissions: [
      "model:read"
    ]
  },
  config: {}
})
curl
PUT /api/plugins/{id}/actualización
curl --request PUT "${CADCAMFUN_URL}/api/plugins/<id>/update" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
parche /api/plugins/{id}/update # plugins.patch

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Cuerpo de la solicitud · requerido · aplicación/json
{
  manifest?: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  } | null
  config?: object | null
}
Respuestas
200 objeto application/json
{
  id: string
  manifest: {
    id: string
    name: string
    version: string
    description: string
    author: string
    repository?: string | null
    license?: string | null
    icon?: string | null
    main: string
    engines: {
      cadcam: string
    }
    permissions: Array<"model:read" | "model:write" | "model:selection" | "ui:sidebar" | "ui:toolbar" | "ui:contextMenu" | "ui:propertyPanel" | "ui:modal" | "ui:overlay" | "storage:local" | "storage:sync" | "file:read" | "file:write" | "file:downloads" | "network:origin" | "network:external" | "system:clipboard" | "system:notifications" | "ui:fullscreen" | "device:camera" | "device:microphone">
    dependencies?: {
      [key: string]: string
    } | null
    contributes?: {
      sidebar?: {
        title: string
        icon: string
        entry: string
      } | null
      commands?: Array<{
        id: string
        title: string
        icon?: string | null
        keybinding?: string | null
      }> | null
      menus?: {
        toolbar?: Array<{
          command: string
          group?: string | null
          when?: string | null
          priority?: number | "Infinity" | "-Infinity" | "NaN" | null
        }> | null
        contextMenu?: Array<{
          command: string
          group?: string | null
      } | null
      propertyPanel?: Array<{
        id: string
        title: string
        entry: string
        appliesTo?: string | null
      themes?: Array<{
        id: string
        label: string
        path: string
      }> | null
    } | null
    configuration?: {
      properties: {
        [key: string]: {
          type: string
          default?: unknown | null
          description?: string | null
          enum?: unknown[] | null
          minimum?: number | "Infinity" | "-Infinity" | "NaN" | null
          maximum?: number | null
          pattern?: string | null
        }
      }
    } | null
  }
  state: "none" | "installed" | "enabled" | "disabled" | "loaded" | "activated" | "deactivated" | "error"
  enabled: boolean
  version: string
  installedAt: string
  updatedAt: string
  config?: object | null
  configurationId?: string | null
  errorCount: number | "Infinity" | "-Infinity" | "NaN"
  lastError?: string | null
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.patch
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsPatchInput
const result = await client.plugins.patch({
  id: "<id>",
  manifest: {
    id: "",
    name: "",
    version: "",
    description: "",
    author: "",
    main: "",
    engines: {
      cadcam: ""
    },
    permissions: [
      "model:read"
    ]
  },
  config: {}
})
curl
PARCHE /api/plugins/{id}/actualización
curl --request PATCH "${CADCAMFUN_URL}/api/plugins/<id>/update" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/plugins/registry

conseguir /api/plugins/registry # plugins.registry

Requiere Authorization: Bearer <token>.

Respuestas
200 Matriz<objeto> application/json
Array<{
  id: string
  name: string
  version: string
  description: string
  author: string
  entryPoint: string
  homepage?: string | null
  repository?: string | null
  dependencies: {
    [key: string]: string
  }
  permissions: string[]
  extensionPoints: string[]
  minAppVersion: string
  maxAppVersion?: string | null
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de respuesta capturado · 200
OBTENER /api/plugins/registro
[]
Ejemplo de SDK
plugins.registry
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.plugins.registry()
curl
OBTENER /api/plugins/registro
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
conseguir /api/plugins/registry/{id} # plugins.registryGet

Requiere Authorization: Bearer <token>.

Parámetros
NombreEnTipoRequerido
identificación camino cadena requerido
Respuestas
200 objeto application/json
{
  id: string
  name: string
  version: string
  description: string
  author: string
  entryPoint: string
  homepage?: string | null
  repository?: string | null
  dependencies: {
    [key: string]: string
  }
  permissions: string[]
  extensionPoints: string[]
  minAppVersion: string
  maxAppVersion?: string | null
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Ejemplo de SDK
plugins.registryGet
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// PluginsRegistryGetInput
const result = await client.plugins.registryGet({
  id: "<id>"
})
curl
OBTENER /api/plugins/registry/{id}
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

esquemas

Esquemas con nombre accesibles desde los parámetros, cuerpos y respuestas de este grupo. A ? marca un campo opcional; | null marca un campo que puede estar presente con un valor nulo.

KeyedInternalEncoded
{
  _tag: "KeyedInternal"
  error: string
}
PluginBadRequestEncoded
{
  _tag: "PluginBadRequest"
  error: string
  details?: string[] | null
}
PluginConflictEncoded
{
  _tag: "PluginConflict"
  error: string
}
PluginNotFoundEncoded
{
  _tag: "PluginNotFound"
  error: string
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

Llamando a este grupo

Los identificadores de operación tienen la forma plugins.<name>. El SDK de promesa generado (@cadcamfun/api/sdk) expone la mayoría de ellos como client.<namespace>.<method>(input), dónde input es un objeto plano de parámetros de ruta y campos de cuerpo; El ejemplo de SDK de cada tarjeta muestra el acceso exacto y el tipo de entrada. No se generan cargas de varias partes, respuestas binarias o JavaScript ni webhooks sin formato; esas tarjetas muestran fetch en su lugar.

Errores del SDK de Promise
import { CadCam, ClientError } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

try {
  await client.projects.list()
} catch (error) {
  if (error instanceof ClientError) {
    // Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
  } else {
    // a declared error body: switch on error._tag
  }
}

Solución de problemas

Síntomacausa probableArreglar
401 en cada llamadaToken de un lanzamiento anterior o faltante Bearer prefijoEnviar Authorization: Bearer <token> con la ficha con la que se inició el sidecar.
400 antes de que ocurra algoEl cuerpo o el parámetro no coincide con el esquemaCompare la carga útil con el esquema de solicitud en la tarjeta.
403 o 404 en un registro que puedes ver en otro sitioLa cuenta de actuación difiere.enviar la derecha x-session-tokeno utilice el perfil local propietario del registro.
409Estado conflictivo, como un nombre duplicado o un encabezado de sucursal obsoletoVuelva a leer el recurso y vuelva a intentarlo con los datos actuales.
Pruébelo, dice "bloqueado por CORS"Los documentos se entregan desde un origen sin bucle invertido.Ejecute los documentos localmente o copie la solicitud como curl.
Conexión rechazadaEl sidecar se reinició en un nuevo puerto.Leer el puerto del nuevo ready línea.