Documentation
Plugins
Registre des plugins, installation des packages, configuration, activation/désactivation et ressources du plugin servies.
Traduit automatiquement de l'anglais. Voir l'original en anglais
Envoyez ces demandes à votre propre sidecar en cours d’exécution. Les valeurs restent dans ce navigateur.
Comment ça marche
Le sidecar écoute sur un port de bouclage choisi au démarrage et l'imprime dans son ready doubler; utilisez cette URL et le CADCAMFUN_TOKEN ça a commencé avec. Les demandes vont directement de cette page à cette adresse.
Le sidecar envoie les en-têtes CORS uniquement aux origines Tauri et à http://localhost ou http://127.0.0.1 sur n'importe quel port. À partir des documents hébergés, le navigateur bloque la réponse, exécutez donc les documents localement (bun run dev dans packages/web) pour utiliser le terrain de jeu, ou copiez la requête sous forme curl. Pour expérimenter sans toucher aux données réelles, démarrez le sidecar avec CADCAMFUN_DATA_DIR pointé vers un répertoire jetable — voir la procédure pas à pas de l'API.
Opérations
16 endpoints dans le plugins groupe, généré à partir du propre sidecar Document OpenAPI. Les opérations protégées prennent Authorization: Bearer $CADCAMFUN_TOKEN; voir authentification. Le comportement et les limites sont en place le guide du sous-système.
| poste | /api/plugins/install | plugins.install |
| obtenir | /api/plugins/bootstrap.js | plugins.bootstrap |
| obtenir | /api/plugins/serve | plugins.serve |
| obtenir | /api/plugins | plugins.list |
| obtenir | /api/plugins/{id} | plugins.get |
| supprimer | /api/plugins/{id} | plugins.uninstall |
| obtenir | /api/plugins/{id}/config | plugins.getConfig |
| poste | /api/plugins/{id}/config | plugins.setConfig |
| mettre | /api/plugins/{id}/config | plugins.updateConfig |
| poste | /api/plugins/{id}/enable | plugins.enable |
| poste | /api/plugins/{id}/disable | plugins.disable |
| mettre | /api/plugins/{id}/update | plugins.update |
| correctif | /api/plugins/{id}/update | plugins.patch |
| obtenir | /api/plugins/registry | plugins.registry |
| obtenir | /api/plugins/registry/{id} | plugins.registryGet |
| obtenir | /api/plugins/registry/search | plugins.registrySearch |
/api/plugins/install
plugins.install Nécessite Authorization: Bearer <token>.
{ file: string[] }
201 objet 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
récupérer un exemple
// 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
curl --request POST "${CADCAMFUN_URL}/api/plugins/install" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--data-binary @request-body Essayez-le
Cette opération prend des données multipart/form-data ; utilisez l'exemple curl ou fetch.
/api/plugins/bootstrap.js
plugins.bootstrap Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | requête | chaîne | requis |
200 chaîne application/javascript
string 400 chaîne application/javascript
string 401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 chaîne application/javascript
string 500 chaîne application/javascript
string récupérer un exemple
// 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
curl --request GET "${CADCAMFUN_URL}/api/plugins/bootstrap.js?id=<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
/api/plugins/serve
plugins.serve Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | requête | chaîne | requis |
| déposer | requête | chaîne | requis |
200 chaîne application/octet-stream
string 400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
récupérer un exemple
// 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
curl --request GET "${CADCAMFUN_URL}/api/plugins/serve?id=<id>&file=<file>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
/api/plugins
plugins.list Nécessite Authorization: Bearer <token>.
200 Tableau<objet> 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
Exemple de réponse capturé · 200
[] Exemple de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/plugins" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.get Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet 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
Exemple de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.uninstall Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet application/json
{ message: string }
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request DELETE "${CADCAMFUN_URL}/api/plugins/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.getConfig Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet application/json
object 400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/plugins/<id>/config" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.setConfig Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
object 200 objet application/json
{ message: string }
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/config" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Essayez-le
plugins.updateConfig Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
object 200 objet application/json
{ message: string }
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request PUT "${CADCAMFUN_URL}/api/plugins/<id>/config" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Essayez-le
plugins.enable Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet application/json
{ message: string }
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/enable" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.disable Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet application/json
{ message: string }
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/plugins/<id>/disable" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.update Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
{ 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 }
200 objet 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
Exemple de SDK
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
curl --request PUT "${CADCAMFUN_URL}/api/plugins/<id>/update" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Essayez-le
plugins.patch Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
{ 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 }
200 objet 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
Exemple de SDK
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
curl --request PATCH "${CADCAMFUN_URL}/api/plugins/<id>/update" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Essayez-le
/api/plugins/registry
plugins.registry Nécessite Authorization: Bearer <token>.
200 Tableau<objet> 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
Exemple de réponse capturé · 200
[] Exemple de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.registryGet Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| identifiant | chemin | chaîne | requis |
200 objet 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
Exemple de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
plugins.registrySearch Nécessite Authorization: Bearer <token>.
| Nom | Dans | Taper | Requis |
|---|---|---|---|
| q | requête | chaîne | requis |
200 Tableau<objet> 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 }>
400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Exemple de SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// PluginsRegistrySearchInput
const result = await client.plugins.registrySearch({}) curl
curl --request GET "${CADCAMFUN_URL}/api/plugins/registry/search?q=<q>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Essayez-le
Schémas
Schémas nommés accessibles à partir des paramètres, des corps et des réponses de ce groupe. UN ? marque un champ facultatif ; | null marque un champ qui peut être présent avec une valeur nulle.
KeyedInternalEncoded{ _tag: "KeyedInternal" error: string }
PluginBadRequestEncoded{ _tag: "PluginBadRequest" error: string details?: string[] | null }
PluginConflictEncoded{ _tag: "PluginConflict" error: string }
PluginNotFoundEncoded{ _tag: "PluginNotFound" error: string }
Appel à ce groupe
Les identifiants d'opération ont la forme plugins.<name>. Le SDK Promise généré (@cadcamfun/api/sdk) expose la plupart d'entre eux comme client.<namespace>.<method>(input), où input est un objet plat composé de paramètres de chemin et de champs de corps ; L'exemple de SDK de chaque carte montre l'accesseur exact et le type d'entrée. Les téléchargements en plusieurs parties, les réponses binaires ou JavaScript et les webhooks bruts ne sont pas générés ; ces cartes montrent fetch à la place.
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
}
} Dépannage
| Symptôme | Cause probable | Réparer |
|---|---|---|
| 401 à chaque appel | Jeton d'un lancement précédent, ou manquant Bearer préfixe | Envoyer Authorization: Bearer <token> avec le jeton avec lequel le sidecar a été démarré. |
| 400 avant que quoi que ce soit se produise | Le corps ou le paramètre ne correspond pas au schéma | Comparez la charge utile avec le schéma de demande sur la carte. |
| 403 ou 404 sur un enregistrement visible ailleurs | Le compte intérimaire diffère | Envoyez le droit x-session-token, ou utilisez le profil local propriétaire de l'enregistrement. |
| 409 | État conflictuel, tel qu'un nom en double ou un chef de succursale obsolète | Relisez la ressource et réessayez avec les données actuelles. |
| Essayez, il est écrit "bloqué par CORS" | Les documents sont servis à partir d'une origine sans bouclage | Exécutez la documentation localement ou copiez la demande en tant que curl. |
| Connexion rejetée | Le sidecar a redémarré sur un nouveau port | Lire le port du nouveau ready ligne. |