Zum Inhalt springen
CADCAMFUN
Doku

Dokumentation

Plugins

Plugin-Registrierung, Paketinstallation, Konfiguration, Aktivieren/Deaktivieren und bereitgestellte Plugin-Assets.

Automatisch aus dem Englischen übersetzt. Englisches Original ansehen

Playground

Senden Sie diese Anfragen an Ihren eigenen laufenden Sidecar. Werte bleiben in diesem Browser.

Nicht verbunden
Wie das funktioniert

Der Sidecar lauscht an einem beim Start ausgewählten Loopback-Port und gibt ihn dort aus ready linie; Verwenden Sie diese URL und die CADCAMFUN_TOKEN es wurde damit begonnen. Anfragen gehen direkt von dieser Seite an diese Adresse.

Der Sidecar sendet CORS-Header nur an die Tauri-Ursprünge und an http://localhost oder http://127.0.0.1 auf jedem Port. Von den gehosteten Dokumenten aus blockiert der Browser die Antwort, also führen Sie die Dokumente lokal aus (bun run dev in packages/web), um den Spielplatz zu nutzen, oder kopieren Sie die Anfrage als Curl. Um zu experimentieren, ohne echte Daten zu berühren, starten Sie den Sidecar mit CADCAMFUN_DATA_DIR zeigte auf ein Wegwerfverzeichnis – siehe die API-Komplettlösung.

Operationen

16 Endpunkte in der plugins gruppe, generiert aus der eigenen Gruppe des Sidecars OpenAPI-Dokument. Geschützte Operationen dauern Authorization: Bearer $CADCAMFUN_TOKEN; sehen authentifizierung. Verhalten und Grenzen sind in das Subsystemhandbuch.

post /api/plugins/install plugins.install
erhalten /api/plugins/bootstrap.js plugins.bootstrap
erhalten /api/plugins/serve plugins.serve
erhalten /api/plugins plugins.list
erhalten /api/plugins/{id} plugins.get
löschen /api/plugins/{id} plugins.uninstall
erhalten /api/plugins/{id}/config plugins.getConfig
post /api/plugins/{id}/config plugins.setConfig
setzen /api/plugins/{id}/config plugins.updateConfig
post /api/plugins/{id}/enable plugins.enable
post /api/plugins/{id}/disable plugins.disable
setzen /api/plugins/{id}/update plugins.update
patch /api/plugins/{id}/update plugins.patch
erhalten /api/plugins/registry plugins.registry
erhalten /api/plugins/registry/{id} plugins.registryGet
erhalten /api/plugins/registry/search plugins.registrySearch
Plugins-Vorgänge in 3D Zum Orbit ziehen · zum Zoomen scrollen · zum Schwenken mit der rechten Maustaste ziehen
Ein Block pro Vorgang (16), gestapelt pro Ressourcenabschnitt dieser Seite und nach Methode gefärbt: grün GET, orange POST, blau PUT, violett PATCH, rot DELETE. Wird zur Erstellungszeit aus dem OpenAPI-Dokument generiert.

/api/plugins/install

post /api/plugins/install # plugins.install

Erfordert Authorization: Bearer <token>.

Anforderungstext · erforderlich · mehrteilige/Formulardaten
{
  file: string[]
}
Antworten
201 objekt 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
beispiel abrufen
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/install
curl --request POST "${CADCAMFUN_URL}/api/plugins/install" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: multipart/form-data" \
  --data-binary @request-body
Probieren Sie es aus

Für diesen Vorgang werden Multipart-/Formulardaten benötigt. Verwenden Sie das Curl- oder Fetch-Beispiel.

/api/plugins/bootstrap.js

erhalten /api/plugins/bootstrap.js # plugins.bootstrap

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis abfrage zeichenfolge erforderlich
Antworten
200 zeichenfolge application/javascript
string
400 zeichenfolge application/javascript
string
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 zeichenfolge application/javascript
string
500 zeichenfolge application/javascript
string
beispiel abrufen
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
GET /api/plugins/bootstrap.js
curl --request GET "${CADCAMFUN_URL}/api/plugins/bootstrap.js?id=<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Probieren Sie es aus

/api/plugins/serve

erhalten /api/plugins/serve # plugins.serve

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis abfrage zeichenfolge erforderlich
datei abfrage zeichenfolge erforderlich
Antworten
200 zeichenfolge application/octet-stream
string
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
beispiel abrufen
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/serve
curl --request GET "${CADCAMFUN_URL}/api/plugins/serve?id=<id>&file=<file>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Probieren Sie es aus

/api/plugins

erhalten /api/plugins # plugins.list

Erfordert Authorization: Bearer <token>.

Antworten
200 Array<Objekt> 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
Beispielantwort erfasst · 200
GET /api/plugins
[]
SDK-Beispiel
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
GET /api/plugins
curl --request GET "${CADCAMFUN_URL}/api/plugins" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Probieren Sie es aus
erhalten /api/plugins/{id} # plugins.get

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt 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
SDK-Beispiel
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
GET /api/plugins/{id}
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Probieren Sie es aus
löschen /api/plugins/{id} # plugins.uninstall

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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
/api/plugins/{id} LÖSCHEN
curl --request DELETE "${CADCAMFUN_URL}/api/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Probieren Sie es aus
erhalten /api/plugins/{id}/config # plugins.getConfig

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt application/json
object
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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}"
Probieren Sie es aus
post /api/plugins/{id}/config # plugins.setConfig

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Anforderungstext · erforderlich · application/json
object
Antworten
200 objekt application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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
Probieren Sie es aus
setzen /api/plugins/{id}/config # plugins.updateConfig

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Anforderungstext · erforderlich · application/json
object
Antworten
200 objekt application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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
Probieren Sie es aus
post /api/plugins/{id}/enable # plugins.enable

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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}"
Probieren Sie es aus
post /api/plugins/{id}/disable # plugins.disable

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt application/json
{
  message: string
}
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
SDK-Beispiel
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}"
Probieren Sie es aus
setzen /api/plugins/{id}/update # plugins.update

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Anforderungstext · erforderlich · application/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
}
Antworten
200 objekt 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
SDK-Beispiel
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
Probieren Sie es aus
patch /api/plugins/{id}/update # plugins.patch

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Anforderungstext · erforderlich · application/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
}
Antworten
200 objekt 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
SDK-Beispiel
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
Probieren Sie es aus

/api/plugins/registry

erhalten /api/plugins/registry # plugins.registry

Erfordert Authorization: Bearer <token>.

Antworten
200 Array<Objekt> 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
Beispielantwort erfasst · 200
GET /api/plugins/registry
[]
SDK-Beispiel
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}"
Probieren Sie es aus
erhalten /api/plugins/registry/{id} # plugins.registryGet

Erfordert Authorization: Bearer <token>.

Parameter
NameInTypErforderlich
ausweis weg zeichenfolge erforderlich
Antworten
200 objekt 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
SDK-Beispiel
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}"
Probieren Sie es aus

Schemata

Benannte Schemata, die über die Parameter, Körper und Antworten dieser Gruppe erreichbar sind. A ? markiert ein optionales Feld; | null markiert ein Feld, das möglicherweise mit einem Nullwert vorhanden ist.

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
}

Ich rufe diese Gruppe an

Vorgangs-IDs haben die Form plugins.<name>. Das generierte Promise SDK (@cadcamfun/api/sdk) entlarvt die meisten von ihnen als client.<namespace>.<method>(input), wo input ist ein flaches Objekt aus Pfadparametern und Körperfeldern; Das SDK-Beispiel jeder Karte zeigt den genauen Zugriffs- und Eingabetyp. Mehrteilige Uploads, Binär- oder JavaScript-Antworten und unformatierte Webhooks werden nicht generiert; Diese Karten zeigen fetch stattdessen.

Fehler vom 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
  }
}

Fehlerbehebung

SymptomWahrscheinliche UrsacheFix
401 bei jedem AufrufToken von einem früheren Start oder fehlt Bearer präfixSchicken Authorization: Bearer <token> mit dem Token wurde der Sidecar gestartet.
400 bevor etwas passiertText oder Parameter stimmen nicht mit dem Schema übereinVergleichen Sie die Nutzlast mit dem Anforderungsschema auf der Karte.
403 oder 404 bei einem Datensatz, den du woanders siehstDas amtierende Konto ist unterschiedlichSchicken Sie das Richtige x-session-token, oder verwenden Sie das lokale Profil, das Eigentümer des Datensatzes ist.
409Widersprüchlicher Status, z. B. ein doppelter Name oder ein veralteter ZweigkopfLesen Sie die Ressource erneut und versuchen Sie es erneut mit den aktuellen Daten.
Versuchen Sie es mit der Meldung „Von CORS blockiert“.Die Dokumente werden von einem Nicht-Loopback-Ursprung bereitgestelltFühren Sie die Dokumente lokal aus oder kopieren Sie die Anfrage als Curl.
Verbindung abgelehntDer Sidecar wurde an einem neuen Port neu gestartetLesen Sie den Port neu ready Zeile.