Provider schema 參考
本頁面渲染由固定版本 bricoop-releases 生成的 provider 定義 schema。provider schema 比 application schema 更大,其欄位按 auths[]、models[]、services[] 和 profiles[] 分組,所以 provider manifest 的每個部分都有自己的欄位集合。每個欄位都列出了它的 path、type、required 標誌以及任何 enum 或 default 值。
切勿手動編輯這些行。這些欄位在建置時由 sources/synced/protocol/reference.json 生成,任何手動編輯都會在下一次同步時被覆寫。如果某個欄位有誤,請在上游 bricoop-releases 中修正並重新執行 protocol 同步;本頁的下一次發布會帶上修正後的行。
該表格由路由從建置所校驗的同一固定快照渲染,所以你在這裡讀到的行與 Bricoop Desktop 在執行時執行的行一致。表格上方顯示的 schemaRevision 是按檔案計算的雜湊;頁面頁尾顯示的 revision 是匯入快照時所用的 40 字元上游 commit。
Provider stable schema
| path | type | required | default | enum |
|---|---|---|---|---|
auths[].api_key.console.name | string | yes | ||
auths[].api_key.console.url | string | yes | ||
auths[].api_key.enabled | boolean | no | true | |
auths[].enabled | boolean | no | true | |
auths[].method | string | yes | OAuth, ApiKey | |
auths[].name | string | yes | ||
auths[].oauth.auth_code.authorize.params[].json | any | yes | ||
auths[].oauth.auth_code.authorize.params[].value | string | yes | ||
auths[].oauth.auth_code.authorize.url.json | any | yes | ||
auths[].oauth.auth_code.authorize.url.value | string | yes | ||
auths[].oauth.auth_code.enabled | boolean | no | true | |
auths[].oauth.auth_code.exchange.body.fields[].json | any | yes | ||
auths[].oauth.auth_code.exchange.body.fields[].value | string | yes | ||
auths[].oauth.auth_code.exchange.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.auth_code.exchange.delay | integer|null | no | ||
auths[].oauth.auth_code.exchange.headers[].json | any | yes | ||
auths[].oauth.auth_code.exchange.headers[].value | string | yes | ||
auths[].oauth.auth_code.exchange.response.body_mapping.system[] | string | no | ||
auths[].oauth.auth_code.exchange.response.body_mapping.vars[] | string | no | ||
auths[].oauth.auth_code.exchange.url.json | any | yes | ||
auths[].oauth.auth_code.exchange.url.value | string | yes | ||
auths[].oauth.auth_code.redirect_uri | string | yes | ||
auths[].oauth.device_code.enabled | boolean | no | true | |
auths[].oauth.device_code.poll.body.fields[].json | any | yes | ||
auths[].oauth.device_code.poll.body.fields[].value | string | yes | ||
auths[].oauth.device_code.poll.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.device_code.poll.delay | integer|null | no | ||
auths[].oauth.device_code.poll.headers[].json | any | yes | ||
auths[].oauth.device_code.poll.headers[].value | string | yes | ||
auths[].oauth.device_code.poll.response.body_mapping.system[] | string | no | ||
auths[].oauth.device_code.poll.response.body_mapping.vars[] | string | no | ||
auths[].oauth.device_code.poll.url.json | any | yes | ||
auths[].oauth.device_code.poll.url.value | string | yes | ||
auths[].oauth.device_code.request.body.fields[].json | any | yes | ||
auths[].oauth.device_code.request.body.fields[].value | string | yes | ||
auths[].oauth.device_code.request.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.device_code.request.delay | integer|null | no | ||
auths[].oauth.device_code.request.headers[].json | any | yes | ||
auths[].oauth.device_code.request.headers[].value | string | yes | ||
auths[].oauth.device_code.request.response.body_mapping.system[] | string | no | ||
auths[].oauth.device_code.request.response.body_mapping.vars[] | string | no | ||
auths[].oauth.device_code.request.url.json | any | yes | ||
auths[].oauth.device_code.request.url.value | string | yes | ||
auths[].oauth.device_code.scopes[] | string | no | ||
auths[].oauth.device_code.vars[] | string | no | ||
auths[].oauth.enabled | boolean | no | true | |
auths[].oauth.refresh.access_token_ttl_seconds | integer|null | no | ||
auths[].oauth.refresh.body.fields[].json | any | yes | ||
auths[].oauth.refresh.body.fields[].value | string | yes | ||
auths[].oauth.refresh.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.refresh.delay | integer|null | no | ||
auths[].oauth.refresh.headers[].json | any | yes | ||
auths[].oauth.refresh.headers[].value | string | yes | ||
auths[].oauth.refresh.method | null|string | no | ||
auths[].oauth.refresh.response.body_mapping.system[] | string | no | ||
auths[].oauth.refresh.response.body_mapping.vars[] | string | no | ||
auths[].oauth.refresh.response.error.permanent_codes[] | string | no | ||
auths[].oauth.refresh.response.error.permanent_statuses[] | integer | no | ||
auths[].oauth.refresh.url | null|string | no | ||
auths[].oauth.scopes[] | string | no | ||
auths[].oauth.vars[] | string | no | ||
auths[].request.additional_fields[].json | any | yes | ||
auths[].request.additional_fields[].value | string | yes | ||
auths[].request.additional_headers[].json | any | yes | ||
auths[].request.additional_headers[].value | string | yes | ||
auths[].request.body_template | null|string | no | null | |
auths[].request.delay | integer|null | no | ||
enabled | boolean | no | true | |
id | string | yes | ||
minimal_client_version | string | yes | ||
models[].aliases[] | string | no | ||
models[].capabilities.compaction.encoding | null|string | no | ||
models[].capabilities.compaction.transport | null|string | no | local | |
models[].capabilities.deferred_tool_loading | boolean | no | false | |
models[].capabilities.parallel_tool_calls | boolean | yes | ||
models[].capabilities.structured_output | boolean | yes | ||
models[].capabilities.thinking | null | no | ||
models[].description | null|string | no | ||
models[].enabled | boolean | no | true | |
models[].kind | string | yes | Chat | |
models[].max_context_tokens | integer | yes | ||
models[].max_output_tokens | integer | yes | ||
models[].modalities.input[] | string | no | text, image, video | |
models[].modalities.output[] | string | no | text, image, video | |
models[].model_id | string | yes | ||
models[].name | string | yes | ||
models[].release_date | string | yes | ||
models[].scenes[] | string | no | ||
models[].supported_protocols[] | string | no | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
models[].tier | string | yes | frontier | |
name | string | yes | ||
profiles[].auth | string | yes | ||
profiles[].billing_mode | string | no | Subscription, UsageBasedApiKey, Hybrid, Unknown | |
profiles[].enabled | boolean | no | true | |
profiles[].encrypted_compaction_plain_strategy | string | no | lazy, eager | |
profiles[].max_context_tokens | integer|null | no | null | |
profiles[].max_output_tokens | integer|null | no | null | |
profiles[].name | string | yes | ||
profiles[].post_auth[].body.fields[].json | any | yes | ||
profiles[].post_auth[].body.fields[].value | string | yes | ||
profiles[].post_auth[].body.type | string | yes | json, form_urlencoded | |
profiles[].post_auth[].delay | integer|null | no | ||
profiles[].post_auth[].headers[].json | any | yes | ||
profiles[].post_auth[].headers[].value | string | yes | ||
profiles[].post_auth[].method | null|string | no | ||
profiles[].post_auth[].name | string | yes | ||
profiles[].post_auth[].response.body_mapping.system[] | string | no | ||
profiles[].post_auth[].response.body_mapping.vars[] | string | no | ||
profiles[].post_auth[].url.json | any | yes | ||
profiles[].post_auth[].url.value | string | yes | ||
profiles[].request.additional_fields[].json | any | yes | ||
profiles[].request.additional_fields[].value | string | yes | ||
profiles[].request.additional_headers[].json | any | yes | ||
profiles[].request.additional_headers[].value | string | yes | ||
profiles[].request.body_template | null|string | no | null | |
profiles[].request.delay | integer|null | no | ||
profiles[].routing_filters[].action | string | no | allow, deny | |
profiles[].routing_filters[].kind | string | yes | Chat | |
profiles[].routing_filters[].model | null|string | no | ||
profiles[].routing_filters[].protocol | null|string | no | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
profiles[].services[] | string | no | ||
profiles[].vars[].default | null|string | no | ||
profiles[].vars[].description | null|string | no | ||
profiles[].vars[].required | boolean | no | false | |
profiles[].vars[].type | string | no | string, integer, number, boolean | |
schema_version | integer | yes | 2 | |
services[].capabilities.compaction.encoding | null|string | no | ||
services[].capabilities.compaction.transport | null|string | no | local, remote | |
services[].capabilities.custom_tools | boolean | no | false | |
services[].capabilities.max_output_tokens.field | string | yes | max_tokens, max_completion_tokens | |
services[].capabilities.mid_conversation_system | boolean | no | false | |
services[].capabilities.namespace_tools | boolean | no | false | |
services[].capabilities.stop | boolean | no | true | |
services[].capabilities.thinking.adaptive.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.adaptive.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.adaptive.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.adaptive.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.adaptive.request.body_template | null|string | no | null | |
services[].capabilities.thinking.adaptive.request.delay | integer|null | no | ||
services[].capabilities.thinking.disabled.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.disabled.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.disabled.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.disabled.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.disabled.request.body_template | null|string | no | null | |
services[].capabilities.thinking.disabled.request.delay | integer|null | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.high | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.low | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.max | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.medium | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.minimal | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.xhigh | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_value.high | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.low | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.max | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.medium | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.minimal | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.xhigh | string | no | ||
services[].capabilities.thinking.enabled.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.enabled.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.enabled.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.enabled.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.enabled.request.body_template | null|string | no | null | |
services[].capabilities.thinking.enabled.request.delay | integer|null | no | ||
services[].capabilities.thinking.encoding | string | no | plain | |
services[].enabled | boolean | no | true | |
services[].endpoint.json | any | yes | ||
services[].endpoint.value | string | yes | ||
services[].execution.idle_timeout_seconds | integer|null | no | ||
services[].execution.max_attempts | integer|null | no | ||
services[].execution.timeout_seconds | integer|null | no | ||
services[].kind | string | yes | Chat | |
services[].name | string | yes | ||
services[].path.json | any | yes | ||
services[].path.value | string | yes | ||
services[].priority | integer | no | 0 | |
services[].protocol | string | yes | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
services[].request.additional_fields[].json | any | yes | ||
services[].request.additional_fields[].value | string | yes | ||
services[].request.additional_headers[].json | any | yes | ||
services[].request.additional_headers[].value | string | yes | ||
services[].request.body_template | null|string | no | null | |
services[].request.delay | integer|null | no | ||
services[].response.reasoning_fields.content | null|string | no | ||
services[].response.reasoning_fields.encrypted_content | null|string | no | ||
services[].response.reasoning_fields.signature | null|string | no | ||
services[].response.reasoning_fields.summary | null|string | no | ||
services[].response.selector | null|string | no | null | |
version | string | yes |