Pular para o conteúdo
CADCAMFUN
Docs

Documentação

Plug-ins

Registro de plug-in, instalação de pacote, configuração, ativação/desativação e ativos de plug-in servidos.

Traduzido automaticamente do inglês. Ver o original em inglês

Área de testes

Envie essas solicitações para seu próprio sidecar em execução. Os valores permanecem neste navegador.

Não conectado
Como isso funciona

O sidecar escuta em uma porta de loopback escolhida na inicialização e a imprime em seu ready linha; use esse URL e o CADCAMFUN_TOKEN foi iniciado. As solicitações vão direto desta página para esse endereço.

O sidecar envia cabeçalhos CORS apenas para as origens Tauri e para http://localhost ou http://127.0.0.1 em qualquer porto. Nos documentos hospedados, o navegador bloqueia a resposta, então execute os documentos localmente (bun run dev em packages/web) para usar o playground ou copie a solicitação como curl. Para experimentar sem tocar em dados reais, inicie o sidecar com CADCAMFUN_DATA_DIR apontado para um diretório descartável - veja o passo a passo da API.

Operações

16 endpoints no plugins grupo, gerado a partir do próprio sidecar Documento OpenAPI. As operações protegidas levam Authorization: Bearer $CADCAMFUN_TOKEN; ver autenticação. Comportamento e limites estão em o guia do subsistema.

publicar /api/plugins/install plugins.install
pegar /api/plugins/bootstrap.js plugins.bootstrap
pegar /api/plugins/serve plugins.serve
pegar /api/plugins plugins.list
pegar /api/plugins/{id} plugins.get
excluir /api/plugins/{id} plugins.uninstall
pegar /api/plugins/{id}/config plugins.getConfig
publicar /api/plugins/{id}/config plugins.setConfig
colocar /api/plugins/{id}/config plugins.updateConfig
publicar /api/plugins/{id}/enable plugins.enable
publicar /api/plugins/{id}/disable plugins.disable
colocar /api/plugins/{id}/update plugins.update
correção /api/plugins/{id}/update plugins.patch
pegar /api/plugins/registry plugins.registry
pegar /api/plugins/registry/{id} plugins.registryGet
pegar /api/plugins/registry/search plugins.registrySearch
Operações de plug-ins em 3D Arraste para orbitar · role para ampliar · arraste com o botão direito para deslocar
Um bloco por operação (16), empilhado por seção de recursos desta página e colorido por método: verde GET, laranja POST, azul PUT, violeta PATCH, vermelho DELETE. Gerado a partir do documento OpenAPI em tempo de construção.

/api/plugins/install

publicar /api/plugins/install # plugins.install

Requer Authorization: Bearer <token>.

Corpo da solicitação · obrigatório · multipart/form-data
{
  file: string[]
}
Respostas
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 exemplo
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
POST /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
Experimente

Esta operação utiliza multipart/form-data; use o exemplo curl ou fetch.

/api/plugins/bootstrap.js

pegar /api/plugins/bootstrap.js # plugins.bootstrap

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia consulta corda obrigatório
Respostas
200 corda application/javascript
string
400 corda application/javascript
string
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 corda application/javascript
string
500 corda application/javascript
string
buscar exemplo
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
OBTER /api/plugins/bootstrap.js
curl --request GET "${CADCAMFUN_URL}/api/plugins/bootstrap.js?id=<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente

/api/plugins/serve

pegar /api/plugins/serve # plugins.serve

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia consulta corda obrigatório
arquivo consulta corda obrigatório
Respostas
200 corda 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 exemplo
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
GET /api/plugins/servir
curl --request GET "${CADCAMFUN_URL}/api/plugins/serve?id=<id>&file=<file>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente

/api/plugins

pegar /api/plugins # plugins.list

Requer Authorization: Bearer <token>.

Respostas
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
Resposta de exemplo capturado · 200
OBTER /api/plugins
[]
Exemplo 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
OBTER /api/plugins
curl --request GET "${CADCAMFUN_URL}/api/plugins" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente
pegar /api/plugins/{id} # plugins.get

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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
OBTER /api/plugins/{id}
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente
excluir /api/plugins/{id} # plugins.uninstall

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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
DELETE /api/plugins/{id}
curl --request DELETE "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente
pegar /api/plugins/{id}/config # plugins.getConfig

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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
GET /api/plugins/{id}/config
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>/config" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente
publicar /api/plugins/{id}/config # plugins.setConfig

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Corpo da solicitação · obrigatório · aplicação/json
object
Respostas
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
Exemplo 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
POST /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
Experimente
colocar /api/plugins/{id}/config # plugins.updateConfig

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Corpo da solicitação · obrigatório · aplicação/json
object
Respostas
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
Exemplo 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
Experimente
publicar /api/plugins/{id}/enable # plugins.enable

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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}"
Experimente
publicar /api/plugins/{id}/disable # plugins.disable

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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}"
Experimente
colocar /api/plugins/{id}/update # plugins.update

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Corpo da solicitação · obrigatório · aplicação/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
}
Respostas
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
Exemplo 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}/update
curl --request PUT "${CADCAMFUN_URL}/api/plugins/<id>/update" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Experimente
correção /api/plugins/{id}/update # plugins.patch

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Corpo da solicitação · obrigatório · aplicação/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
}
Respostas
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
Exemplo 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
PATCH /api/plugins/{id}/update
curl --request PATCH "${CADCAMFUN_URL}/api/plugins/<id>/update" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Experimente

/api/plugins/registry

pegar /api/plugins/registry # plugins.registry

Requer Authorization: Bearer <token>.

Respostas
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
Resposta de exemplo capturado · 200
GET /api/plugins/registry
[]
Exemplo 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
GET /api/plugins/registry
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente
pegar /api/plugins/registry/{id} # plugins.registryGet

Requer Authorization: Bearer <token>.

Parâmetros
NomeEmTipoObrigatório
eu ia caminho corda obrigatório
Respostas
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
Exemplo 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
GET /api/plugins/registry/{id}
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Experimente

Esquemas

Esquemas nomeados acessíveis a partir dos parâmetros, corpos e respostas deste grupo. UM ? marca um campo opcional; | null marca um campo que pode estar presente com um 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
}

Chamando este grupo

Os IDs de operação têm o formato plugins.<name>. O Promise SDK gerado (@cadcamfun/api/sdk) expõe a maioria deles como client.<namespace>.<method>(input), onde input é um objeto plano de parâmetros de caminho e campos de corpo; o exemplo do SDK de cada cartão mostra o acessador e o tipo de entrada exatos. Multipart uploads, respostas binárias ou JavaScript e webhooks brutos não são gerados; essas cartas mostram fetch em vez disso.

Erros do Promise SDK
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
  }
}

Solução de problemas

SintomaCausa provávelConsertar
401 em cada chamadaToken de um lançamento anterior ou ausente Bearer prefixoEnviar Authorization: Bearer <token> com o token com o qual o sidecar foi iniciado.
400 antes que algo aconteçaO corpo ou parâmetro não corresponde ao esquemaCompare a carga útil com o esquema de solicitação no cartão.
403 ou 404 em um registro que você vê em outro lugarA conta atuante difereEnvie o certo x-session-tokenou use o perfil local que possui o registro.
409Estado conflitante, como um nome duplicado ou um cabeçalho de ramificação obsoletoLeia novamente o recurso e tente novamente com os dados atuais.
Tente dizer "bloqueado pelo CORS"Os documentos são veiculados a partir de uma origem sem loopbackExecute os documentos localmente ou copie a solicitação como curl.
Ligação recusadaO sidecar foi reiniciado em uma nova portaLeia a porta do novo ready linha.