Документация
Плагины
Реестр плагинов, установка пакетов, настройка, включение/отключение и обслуживание ресурсов плагина.
Автоматически переведено с английского. Смотреть оригинал на английском
Отправьте эти запросы на свою работающую сайдкар. Значения остаются в этом браузере.
Как это работает
Сайдкар прослушивает порт обратной связи, выбранный при запуске, и печатает его в своем ready линия; используйте этот URL-адрес и CADCAMFUN_TOKEN с этого началось. Запросы идут прямо с этой страницы на этот адрес.
Sidecar отправляет заголовки CORS только источникам Tauri и http://localhost или http://127.0.0.1 в любом порту. Из размещенных документов браузер блокирует ответ, поэтому запускайте документы локально (bun run dev в packages/web), чтобы использовать игровую площадку, или скопируйте запрос как завиток. Чтобы поэкспериментировать, не затрагивая реальные данные, запустите сайдкар с помощью CADCAMFUN_DATA_DIR указал на одноразовый каталог — см. пошаговое руководство по API.
Операции
16 endpoint в plugins группа, созданная на основе собственной сайдкара документ OpenAPI. Защищенные операции занимают Authorization: Bearer $CADCAMFUN_TOKEN; видеть аутентификация. Поведение и ограничения находятся в руководство по подсистеме.
| почта | /api/plugins/install | plugins.install |
| получать | /api/plugins/bootstrap.js | plugins.bootstrap |
| получать | /api/plugins/serve | plugins.serve |
| получать | /api/plugins | plugins.list |
| получать | /api/plugins/{id} | plugins.get |
| удалить | /api/plugins/{id} | plugins.uninstall |
| получать | /api/plugins/{id}/config | plugins.getConfig |
| почта | /api/plugins/{id}/config | plugins.setConfig |
| помещать | /api/plugins/{id}/config | plugins.updateConfig |
| почта | /api/plugins/{id}/enable | plugins.enable |
| почта | /api/plugins/{id}/disable | plugins.disable |
| помещать | /api/plugins/{id}/update | plugins.update |
| пластырь | /api/plugins/{id}/update | plugins.patch |
| получать | /api/plugins/registry | plugins.registry |
| получать | /api/plugins/registry/{id} | plugins.registryGet |
| получать | /api/plugins/registry/search | plugins.registrySearch |
/api/plugins/install
plugins.install Требует Authorization: Bearer <token>.
{ file: string[] }
201 объект 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
взять пример
// 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 Попробуйте это
Эта операция принимает multipart/form-data; используйте пример скручивания или выборки.
/api/plugins/bootstrap.js
plugins.bootstrap Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | запрос | нить | необходимый |
200 нить application/javascript
string 400 нить application/javascript
string 401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 нить application/javascript
string 500 нить application/javascript
string взять пример
// 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}" Попробуйте это
/api/plugins/serve
plugins.serve Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | запрос | нить | необходимый |
| файл | запрос | нить | необходимый |
200 нить application/octet-stream
string 400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
взять пример
// 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}" Попробуйте это
/api/plugins
plugins.list Требует Authorization: Bearer <token>.
200 Массив<объект> 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
Пример ответа пойман · 200
[] Пример 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}" Попробуйте это
plugins.get Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект 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
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}" Попробуйте это
plugins.uninstall Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект 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
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}" Попробуйте это
plugins.getConfig Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект application/json
object 400 PluginBadRequestEncoded application/json
PluginBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 PluginNotFoundEncoded application/json
PluginNotFoundEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
Пример 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}" Попробуйте это
plugins.setConfig Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
object 200 объект 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
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 Попробуйте это
plugins.updateConfig Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
object 200 объект 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
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 Попробуйте это
plugins.enable Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект 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
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}" Попробуйте это
plugins.disable Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект 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
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}" Попробуйте это
plugins.update Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
{ 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 объект 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
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 Попробуйте это
plugins.patch Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
{ 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 объект 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
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 Попробуйте это
/api/plugins/registry
plugins.registry Требует Authorization: Bearer <token>.
200 Массив<объект> 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
Пример ответа пойман · 200
[] Пример 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}" Попробуйте это
plugins.registryGet Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| идентификатор | путь | нить | необходимый |
200 объект 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
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}" Попробуйте это
plugins.registrySearch Требует Authorization: Bearer <token>.
| Имя | В | Тип | Необходимый |
|---|---|---|---|
| q | запрос | нить | необходимый |
200 Массив<объект> 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
Пример 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}" Попробуйте это
Схемы
Именованные схемы, доступные из параметров, тел и ответов этой группы. А ? отмечает необязательное поле; | null отмечает поле, которое может иметь нулевое значение.
KeyedInternalEncoded{ _tag: "KeyedInternal" error: string }
PluginBadRequestEncoded{ _tag: "PluginBadRequest" error: string details?: string[] | null }
PluginConflictEncoded{ _tag: "PluginConflict" error: string }
PluginNotFoundEncoded{ _tag: "PluginNotFound" error: string }
Звонок в эту группу
Идентификаторы операций имеют вид plugins.<name>. Сгенерированный Promise SDK (@cadcamfun/api/sdk) выставляет большинство из них как client.<namespace>.<method>(input), где input представляет собой один плоский объект параметров пути и полей тела; В примере SDK каждой карты показаны точный метод доступа и тип ввода. Многочастные загрузки, двоичные ответы или ответы JavaScript, а также необработанные веб-перехватчики не генерируются; эти карты показывают fetch вместо этого.
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
}
} Поиск неисправностей
| Симптом | Вероятная причина | Исправить |
|---|---|---|
| 401 на каждый вызов | Токен от предыдущего запуска или отсутствует Bearer префикс | Отправлять Authorization: Bearer <token> с жетоном, с которого была запущена сайдкар. |
| 400 до того как что-либо произойдёт | Тело или параметр не соответствует схеме | Сравните полезную нагрузку со схемой запроса на карте. |
| 403 или 404 у записи, которую видно в другом месте | Действующий счет отличается | Отправить право x-session-tokenили используйте локальный профиль, которому принадлежит запись. |
| 409 | Конфликтующее состояние, например повторяющееся имя или устаревший заголовок ветки. | Перечитайте ресурс и повторите попытку с текущими данными. |
| Попробуйте, написано «заблокировано CORS». | Документы подаются из источника без обратной связи. | Запустите документы локально или скопируйте запрос как curl. |
| В соединении отказано | Сайдкар перезапустилась в новом порту | Прочтите порт из нового ready строка. |